ES6 块级作用域

2018-10-28  本文已影响0人  Cissy_fba3

{}块级作用域,作用域之间互不影响(不管是父子还是孙子什么的,不像函数作用域,儿子没有可以找父亲要)

let 解决var的变量提升问题,让变量安安分分地呆在自己的位置(可以不用闭包和立即执行函数了)
1.let与{}一起,先声明再使用,不然会报错(Temp Dead Zone)
2.let只认{},出了{}使用,报错。

{
  //console.log(a)   报错
  let a=1
  //console.log(a)  1
    {
      //console.log(a)   报错
      let a=2
     //console.log(a)   2
        {
            //console.log(a)   报错
            let a=3
            //console.log(a)  3
        }
    }
}

const与let差不多,唯一区别:const只能赋值一次——常量——声明的时候必须赋值。

for(let i=0;i<6;i++){//i的作用域只在括号里面(),花括号{}里面是访问不到i的
}

以下语句会产生 let 使用的作用域:
for; if; switch;try/catch/finally。

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

var tmp = 123;

if (true) {
  tmp = 'abc'; // ReferenceError
  let tmp;
}
上一篇下一篇

猜你喜欢

热点阅读