es6 const let class 定义变量提升。

在掘金的分享文章当中看到了关于es6 const 和 let变量声明是否提升的文章,学到了很多。


原文链接
stackoverflow相关问题连接


const、 let、class 和、var、function定义一样都存在变量提升。只不过是初始化的不同表现才使得前面一组定义和后一组不太一样

在变量提升后,var 会给变量初始值undefined。而let等定义方式是未初始化,也就是什么值都没有。这就意味着当你尝试去读取值的时候会报错。所以会有一个暂时性死区的感念。这个区间就是在未进行初始化前,进行值得访问。


x = y = "global";
(function() {
    x; // undefined
    y; // Reference error: y is not defined

    var x = "local";
    let y = "local";
}());

简单结论

  1. let 的「创建」过程被提升了,但是初始化没有提升。
  2. .var 的「创建」和「初始化」都被提升了。
  3. function 的「创建」「初始化」和「赋值」都被提升了。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容