# 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