JavaScript

面试题 -- let与var的区别

2019-04-22  本文已影响0人  开着五菱宏光的小白

区别

{
   var i = 0
}
console.log(i)   //0

{
  let i = 0
}
console.log(i)  //i is not defined

 for(var i = 0; i < 5; i ++) {
      setTimeout(() => {
          console.log(i)
      },0)
  }
   // 5个5

 for(let i = 0; i < 5; i ++) {
     setTimeout(() => {
        console.log(i)
     },0) 
 }
 // 0,1,2,3,4


console.log(a)
let a = "b"
// a is not defined

ES6 明确规定,如果区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。
总之,在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”(temporal dead zone,简称 TDZ)。


let a = 0
let a = 1
//Identifier 'a' has already been declared
上一篇下一篇

猜你喜欢

热点阅读