美文网首页
第四小节:临时性死区与变量提升

第四小节:临时性死区与变量提升

作者: Janicerant | 来源:发表于2017-12-06 16:21 被阅读0次

1.临时性死区

        在讲到临时性死区这个概念的时候,我们先来做一个小题目:

<script>
    console.log(color);
    var color = 'yellow';
</script>

        请问图上的代码打印出来后结果是什么?

A.referenceError            B.undefined            C.yellow
正确答案是B哦,有没有答对呢~这是为什么呢?原因就是在javascript中存在变量提升这个概念,在javascript中,functions中variables会被提升。变量提升是javascript将声明移至作用域scope(全局域或者当前函数作用域)顶部的行为。所以,以上代码实际运行当中其实是

<script>
    var color;
    console.log(color);
    color = 'yellow';
</script>

        由于之前已经声明了变量,所以不会报referenceError ,同时还没来得及给color赋值yellow,所以最后的结果是undefined。
        当然啦,如果把var换成let和const会是什么样的结果的?结果就是出现referenceError报错,其实呢在let中也存在变量提升这个概念的,但是在let和const中还存在一个叫做 “临时性死区” 的概念。在这个作用域的开始直到变量的声明之前,这个变量都是处在 “临时性死区” 当中的,这个时候引用他的话会报referenceError的错误,其实这个特征可以帮助我们养成在变量未声明之前不要使用它的好习惯。
        在ES6中选择困难的我应该怎样使用var、let和const来声明我的变量呢~目前我采用的是默认使用const,需要重新绑定或者更新的时候就使用let,在ES6中尽量不使用var。如果不想你的变量被修改的话使用const简洁明了,如果你会重新更新这个变量的值那么就使用let,而使用var可能会产生一些重复声明,以及在定义之前使用它不太容易找到的错误,所以尽量使用const和let。

相关文章

  • 第四小节:临时性死区与变量提升

    1.临时性死区 在讲到临时性死区这个概念的时候,我们先来做一个小题目: 请问图上的代码打印出来后结果是什么? A....

  • ES6学习笔记

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

  • JS高级知识点

    TDZ(暂时性死区) 学习暂时性死区之前需要先了解一下var,let和const的区别(变量提升可分为创建提升和初...

  • let和const命令

    let和var的一些区别 var存在变量提升,let不存在变量提升 暂时性死区(temporal dead zon...

  • ECMAScript6 新增语法

    let 作用域在代码块 用在for循环里面 在作用域内变量重名报错 没有变量提升 死区 函数

  • ES6基础笔记

    ES6 声明属性 let(块内变量) var(全局变量) 变量作用域,和变量提升(var) 暂时性死区,重复声明 ...

  • ES6 let、const

    let 和 const 共同存在的特性 不存在变量提升暂时性死区(使用 let、const 声明变量之前,该变量都...

  • ES6 笔记之let,const

    const定义的变量,和let声明的变量都不会进行变量提升,预编译阶段扫描到变量声明时,将变量声明放入暂时性死区,...

  • 深入浅析var,let,const的异同点

    一、let和var区别 1.关于变量提升,var能变量提升,let不能 2.暂时性死区:块级作用域内存在let命令...

  • let 与 const

    1、 var 与 let、const 区别 a、不存在变量提升 b、暂时性死区 c、不允许重复声明 d、块级作用域...

网友评论

      本文标题:第四小节:临时性死区与变量提升

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