es6 基础知识

1  let命令【声明的变量,只在let命令所在的代码块内有效】【闭包】

               tip: 函数内部中引用的外部的变量 i  随着循环结束,i的值为10

                  tip: 函数内部引用的外部变量i,  i在每次循环中都是一个新的变量,将变量固定不发生变化

2  不存在变量提升

   tip: var定义的变量在预编译阶段,变量会存在词法分析器中

值为undefined    let定义的变量不会保存在词法器中

3  暂时性死区【只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响】

先存在全局变量tmp, 但是块级作用域内let又声明了一个局部变量 tmp,导致后者绑定这个块级作用域

所以在let声明变量前, 对tmp赋值会报错

在es6中,如果区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成了

封闭作用域,凡在声明之前就使用这些变量,就会报错

4   不允许重复声明

  tip:  第二个func内部重新定义arg正常,是因为大括号添加了块级作用域

5  为什么需要块级作用域

(1)内层变量会覆盖外层变量【变量提升】   

(2) 用来计数的循环变量泄露为全局变量 

6 块级作用域

       

tip: es6的块级作用域允许声明函数的规则,只在使用大括号的情况下成立, 声明的函数相当于let变量

7  

猜你喜欢

转载自blog.csdn.net/wangyoucaoxiaoxiao/article/details/85094830