ES6 let const

Posted 循序渐进,不急不躁

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)不再必要了。

 

以上是关于ES6 let const的主要内容,如果未能解决你的问题,请参考以下文章

ES6入门学习_let和const命令

JavaScript学习笔记 -- ES6学习 let 和const

ES6 中 let 与 const命令

ES6中的let 和 const 命令区别?

ES6之let和const

ES6学习之-let 和const命令