ES6 笔记

1,let 暂时性死区

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

 var tmp=123;
 if(true){
     tmp="abc";
     let tmp;
 }

  

  结果如下:

也就是说:虽然上面的代码中存在全局变量tmp,但是块级作用域内let又声明了一个局部变量tmp,导致后者绑定了块级作用域,所以在let声明变量前,对tmp赋值会报错。此即暂时性死区。

 

暂时性死区就是: 只要块级作用域内存在let,那么他所声明的变量就绑定了这个区域,不再受外部的影响。

暂时性死区即 Temperary Dead Zone,即TDZ。 

 

来源:https://www.cnblogs.com/zhuzhenwei918/p/6131345.html

2, let 在 for 循环结构的理解

for(let i=0;i<3;i++){
    let i = "abc";
    console.log(i);
}


// abc
// abc
// abc

  

for循环里的 ()和 { } 合起来是 一个大的块级作用域,并且()是父级作用域,{ }是个单独的子级作用域,每次循环会创建一个新的【()和 { }】 合起来的一个大的块级作用域状态,所以每次 i 的值都对应一个新的大的块级作用域的状态,大的块级作用域的状态下的 { } 子级作用域之间是相互独立的,并且每次()父级作用域会记住上次循环的父级作用域内的循环变量的值,然后基于此值计算本次循环变量的值,以此类推,直至循环结束。

来源:https://www.jianshu.com/p/8f890da2d8bc
posted @ 2019-04-02 10:21  纤锐  阅读(155)  评论(0编辑  收藏  举报