深入探讨 JavaScript Hoisting (变量提升) 的原理,以及 var, let, const, function 声明的提升行为差异。

咳咳,各位观众老爷,晚上好!我是你们的老朋友,今天咱们来聊聊 JavaScript 里的一个老生常谈但又总让人犯迷糊的家伙——变量提升 (Hoisting)。放心,咱们不搞学术那一套,争取用最接地气的方式,把这玩意儿给扒个精光。 开场白:啥是变量提升? 想象一下,你正在厨房做饭,菜谱上写着“先放盐,再炒菜”。但你脑子一抽,先炒了菜,然后才发现盐还没拿出来。这时候,你好像提前“提升”了拿盐这个动作,虽然实际上你还没做,但你心里已经计划好了。 JavaScript 的变量提升也差不多这意思。在你写代码的时候,虽然你可能把变量或函数的声明放在后面,但 JavaScript 引擎在执行代码前,会先扫描一遍,把这些声明“提升”到作用域的顶部。注意,这里仅仅是声明被提升,赋值操作还在原来的位置。 第一幕:var 的奇幻漂流 var 声明的变量,是提升界的老大哥,也是最容易让人翻车的。咱们先看个例子: console.log(myVar); // 输出:undefined var myVar = “Hello, Hoisting!”; console.log(myVar); // 输出:Hello, …