ES6(二) let const

一:let

1.块级作用域

   外层作用域无法读取内层作用域的变量。

2.不存在变量提升

3.TDZ:暂时性死区

   “暂时性死区”也意味着typeof不再是一个百分之百安全的操作。

    这样的设计是为了让大家养成良好的编程习惯,变量一定要在声明之后使用,否则就报错。

    变量没声明和声明不赋值,返回的都是undefined。

    总之,暂时性死区的本质就是,只要一进入当前作用域,所要使用的变量就已经存在了,但是不可获取,只有等到声明变量的那一行代码出现,才可以获取和使用该变量。

4.不允许重复声明

5.js的作用域:   块级作用域         函数作用域     全局作用域 

   为什么需要块级作用域呢? 

   答:两种不合理的场景       1.内层变量可能会覆盖外层变量。     2.用来计数的循环变量泄露为全局变量。   

二:const

1.声明的值不可以改变。   初始化必须赋值。

2.类似于java的final关键字        对于引用数据类型,是引用地址不可变,但引用指向对象是可以变的。

三:补充

1.ES6的变量声明:var  function     let   const    import    class

2.ES5之中,顶层对象的属性全局变量是等价的。    顶层对象的属性与全局变量挂钩,被认为是JavaScript语言最大的设计败笔之一

思考:

1.块级作用域的出现,实际上使得获得广泛应用的立即执行函数表达式(IIFE)不再必要了。

原文地址:https://www.cnblogs.com/njqa/p/7363036.html