JavaScript 中的 Hoisting 是什么😰😰
来看看我的 JavaScript 书吧!
提升并非指将函数和变量移动到顶部。
实际上,从技术角度来说,它们并没有发生任何移动。
这种情况发生在函数声明时,整个函数
已经加载到内存中。
对于变量声明,JavaScript 引擎在创建时会将其初始化为“undefined”值。我使用调试器在第 6 行停止了正在运行的代码。
你有没有注意到上图中 JavaScript 的初始化值已经是“undefined”?
每当 JavaScript 引擎运行第 6 行时,它都会将 undefined 更新为 'hoisting'。
对于函数,整个函数会被添加到内存空间中。
这就是为什么我们可以在文件中的任何位置调用函数,但不能调用变量的原因。对于变量,我们只能在它首次声明时使用一次。
你检查过 let 和 var 关键字的提升机制吗?
如果在声明之前尝试访问变量,JavaScript 引擎会因使用“let”关键字而报错。
希望你们喜欢这些。


