let
1、let等同于var,但是注意:let定义的变量在代码块中有效,在代码块外面无效,而var定义的变量,在代码块内外都有效。
for(let i = 0; i< 10; i++){
console.log(i);
}
console.log(i);
这种情况外层循环是取不到i的值的。所以最后这个console.log汇报错。
2、let定义变量不会变量提升。再let定义的变量之前去输出这个变量,会报错;但是如果var 定义的变量之前,去输出了这个变量,会输出undefined(未定义)。
3、暂时性死区。在代码块中,使用let定义变量之前,去赋值的话,会报错。
4、不允许重复声明 。如果使用let定义了同一个变量两次,会报错。
5、块级作用域与函数声明。
// 情况一
if (true) {
function f() {}
}
// 情况二
try {
function f() {}
} catch(e) {
// ...
}
这两种情况都是不允许的。
const
定义常亮
const常亮一旦定义就不得更改。