美文网首页
let的临时死区

let的临时死区

作者: 小小的白菜 | 来源:发表于2018-09-27 00:02 被阅读0次

js变量提升

var a = 2;
function test() {
    console.log(a);
    let a = 5;
}
test();

复制代码你觉得上面的代码会输出什么呢?是输出2,还是undefined呢?
如果说,let没有变量提升的效果的话,那么应该是输出2。如果说let拥有和var一样的变量提升效果的话,那么应该是输出undefined。然而,其实上面的代码是会报错的。会报"ReferenceError: a is not defined"错误。那么为什么呢?

let虽然具有变量提升的功能,但是它又与var不一样,它具有一个临死性死区的概念。

临死性死区其实就是说,a我已经声明了,可是在没有到它赋值的时候,你都不能使用这个变量,不然就会报错。所以该当前作用域开始,一直到let a = 5为止这整一块,都是a变量的临死性死区,你不能使用它。而constlet它们的变量提升的效果是一样的,也都存在着临死性死区的概念。

相关文章

  • let的临时死区

    js变量提升 复制代码你觉得上面的代码会输出什么呢?是输出2,还是undefined呢?如果说,let没有变量提升...

  • 深入理解 ES6

    let && const let与var的声明用法相同,但是多了一个临时死区(Temporal Distonrti...

  • ES6 let const

    暂时性死区:只要块级作用域内存在let命令,它所声明的变量就绑定这个区域,不再受外部影响。 暂时性死区:let.c...

  • es6中的let/const

    let 和 const let 声明的变量的作用域是块级的 let 不能重复声明已经存在的变量 let 有暂时死区...

  • let深入理解---let存在变量提升吗

    初识 let let 声明的变量的作用域是块级的; let 不能重复声明已存在的变量; let 有暂时死区,不会被...

  • ES6 中的类与自定义类的不同之处

    《深入理解ES6》阅读随笔 类声明不会被提升,它跟 let 类似,也是存放在临时死区中; 在类中会自动按照严格模式...

  • ES6学习笔记

    let 新增 let 关键字作用与 var 类似 但没有变量提升 let会造成暂时性死区 即 let 声明的变量在...

  • 六、ECMAScript6 特性

    一、let 和 var let:1 只在代码块生效 2 存在暂时性死区:在代码块内,使用let命令声明变量...

  • var let const

    var 可声明前置 let不可声明前置 let不可重复声明 存在块级作用域 暂时性死区(TDZ):在let声明变量...

  • 面试题 -- let与var的区别

    区别 let 可以定义块级作用域变量 let 配合for循环的独特应用 let 没有变量提升和暂时性死区 ES6 ...

网友评论

      本文标题:let的临时死区

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