ES6 新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。
let和const
-
let
和const
是替代品var
声明变量时,let
是块范围的,而不是词汇范围的功能 -
let
是已吊装到区块顶部,而var声明被提升到函数顶部(变量提升) -
const
也是块范围的、提升的,并受TDZ语义的约束 -
const
变量必须使用初始值设定项声明,const foo = 'bar'
-
正在将分配给
const
初始化无提示失败后(严格模式下) -
const
变量不会使赋值不可变const foo = { bar: 'baz' } // 方法foo公司将始终引用右侧对象 const foo = { bar: 'baz' }; foo.bar = 'boo' // 不会扔
-
用相同名称声明变量将引发,意在修复重新分配变量并丢失传递到其他地方的引用的错误
-
在ES6中,函数是块范围的
防止吊装泄露块状秘密,{ let _foo = 'secret', bar = () => _foo; }
在大多数情况下不会破坏用户代码,通常情况下也不会破坏您想要的代码
let基本用法
for循环的计数器,就很合适使用let命令。
for (let i = 0; i < 10; i++) {
// ...
}
console.log(i);
// ReferenceError: i is not defined
let不允许在相同作用域内,重复声明同一个变量。
const基本用法
const
声明一个只读的常量。一旦声明,常量的值就不能改变。
const PI = 3.1415;
PI // 3.1415
PI = 3;
// TypeError: Assignment to constant variable.