美文网首页
let能不能变量提升?

let能不能变量提升?

作者: JLong | 来源:发表于2022-01-20 09:34 被阅读0次

答案是:可以的

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

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

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

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

相关文章

  • ES6

    1 let 与const ①let 不存在变量提升,var 会变量提升:let 声明的变量只在 let 命令所在的...

  • ECMAScript 6 一问三不知

    let var const let 块级作用域不存在变量提升(var变量提升,值为undefined,let变量必...

  • 详解ES6中let与const命令(JavaScript)

    【let】 ES6新增let命令,用来声明变量,只在let命令所在的代码块中有效 不存在变量提升变量提升:变量可以...

  • ES6

    let 1、let 声明的变量 没有变量提升console.log(a);let a = "sun";//a...

  • let能不能变量提升?

    答案是:可以的 let会造成变量提升(Hoisting),但是和var的提升不太一样,由于“暂时性死区”(temp...

  • ES6新语法特性收录

    let const 声明变量 1. let变量声明 let的特点是不会变量提升, 2. const 变量声明 c...

  • let const var 的区别

    1、let 和 const 定义的变量不会出现变量提升,而 var 定义的变量会提升2、let 和 const 会...

  • 2019-07-25

    1.let var区别 var,let 作用域在该代码块中。let 不存在变量提升,var 存在变量提升。cons...

  • let 以及 const

    let 以及 const let命令 let 声明的变量只在它所在的代码块有效。 let 不存在变量提升,在let...

  • ES6定义变量

    一、let命令 不存在变量提升。es5的var会存在变量提升问题,但是es6的let和const不会存在变量提升问...

网友评论

      本文标题:let能不能变量提升?

      本文链接:https://www.haomeiwen.com/subject/ogqjhrtx.html