深入理解ES6(1)--变量声明

165 阅读1分钟

1.var 声明及变量提升

console.log(name) // undefined
var name = 'joker'

上面这段代码不会报错,打印结果为 undefined,因为变量的声明会被提升,等价于

var name
console.log(name) // undefined
name = 'joker'

var 在 for 循环中:

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

结果为 4 4 4 4, 循环结束后所有循环体公用一个变量 i = 4,所以打印结果为 4 4 4 4

2.let 声明

let 申明属于块级申明,用 let 代替 var 来申明变量,就可以把变量的作用域限制在当前代码块中;

console.log(name) // not defined
let name = 'joker'

此时,代码会报错

禁止重声明

加入作用域中已经存在某个标识符, 再使用 let 关键字会报错

3.const

const 的作用与 let 基本相同,const 申明的变量不可更改,且申明时就当赋值。