let和const命令
let
- 它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。
for(let i = 0; i < arr.length; i++){}
- 用let命令声明,不会发生变量提升。
console.log(foo); // error
let foo = 1;
- 暂时性死区。
var tmp = 123;
if (true) {
tmp = 'abc'; // ReferenceError
let tmp;
}
- 不允许重复声明。在相同作用域内重复用let声明同一个变量会报错。
function () {
let a = 10;
let a = 1; // error
}
- 块级作用域
console.log(tmp); // error
if (false) {
var tmp = "hello world";
}
const
- 声明一个只读的常量。一旦声明,常量的值就不能改变。
const PI = 3.1415;
PI = 3; // 常规模式时,重新赋值无效,但不报错
PI // 3.1415
- const一旦声明变量,就必须立即初始化,不能留到以后赋值。
const foo; // error
- 其它特性同let