let能不能变量提升?

答案是:可以的

let会造成变量提升(Hoisting),但是和var的提升不太一样,由于“暂时性死区”(temporal dead zone)的缘故,是不能被使用。

暂时性死区:在let声明之前的执行瞬间叫做暂时性死区,在此阶段引用任何后面才声明的变量都会抛出ReferenceError(引用错误)

总结:按照红宝书中所说结合ECMA262严格来讲let会进行变量提升,但只提升了创建阶段,由于暂时性死区的存在,此前还不能访问。冒然访问会抛出错误ReferenceError。而var的提升由于var的创建阶段与初始化阶段合二为一,直接进入赋值阶段,所以变量提升到当前作用域顶部,是可以访问的。

摘自:https://juejin.cn/post/7054205477571264549

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

友情链接更多精彩内容