# let 和 const

ES6 新增了let/const命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在 let 命令所在的代码块内有效。代码块是在大括号 {} 中所写的语句,if 语句和 for 语句里面的{ }也属于块作用域。对于 var, 在function内部, 加 var 的是局部变量, 不加 var 的则是 全局变量;

  • let 声明变量及作用域 let 不存在变量提升
<!-- 这个例子表面let只在当前代码块内有效 -->
<script>
	{
		var a = 10;
		let b = 20;
		const c = 30;
		{
			console.log(b); // b is not defined
			let b = 30;
			console.log(b); // 30
		}
	}
	console.log(a); // 10
	console.log(b); // b is not defined
	console.log(c); // 因为上面报错 执行不了c
</script>
<script>
	for (var i = 0; i < 10; i++) {
		setTimeout(function() {
			console.log(i); // 10次10
		}, 1000);
	}
	for (let j = 0; j < 10; j++) {
		setTimeout(function() {
			console.log(j); // 0,1,2,3,4,5,6,7,8,9
		}, 1000);
	}
</script>
  • let/const let/const 声明的变量不能重新被定义 let 可以重新赋值 const 不可以赋值
<script>
	// let i = 10;
	// let i = 11;
	// console.log(i) // Identifier 'i' has already been declared
	let i = 10;
	const j = 20;
	i = 30;
	console.log(i);
	j = 40;
	console.log(j);
</script>
  • 什么时候使用 const 什么时候使用 let

如果确定值不会改变 就使用 const 如果确定改变的化就使用 let

上次更新: 10/29/2019, 6:04:16 PM