js 变量提升的原理

众所周知,JavaScript 中存在变量提升的问题,在 ES6 引入的新关键词 let 可以很方便的解决这个问题,不过这篇文章的目的不是解决变量提升的问题,而是讨论为什么会有变量提升这种现象。

以前对这个问题根本没有想过,在看了 《你不知道的 js 》这本书后,才开始考虑并且明白了其中的原因。

变量提升的根本原因是变量声明与赋值的分离,举个例子 var a = 2;这个代码是分两步进行的。首先是 var a 这一部分的变量声明,这个过程是在代码编译时进行的。然后是 a = 2; 这一部分的变量赋值,这个过程是在代码执行时进行的。

代码先编译一遍然后才执行,这样下面的变量提升的代码就容易解释了。

console.log(a)
var a = 2;

b = 3;
var b;
console.log(b)

在这段代码编译的过程中,a 与 b 都进行了声明,代码执行的过程中先打印 a ,因为 a 只是声明了还没有赋值,所以结果是 undefined。后打印 b ,因为 b 的赋值在打印的前面,所以结果是 3.

code
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容