let 和 const
ES6新增加了两个重要的 JavaScript 关键字: let 和 const
一. let 与 var 区别
1.1 let 是在代码块内有效,var 是在全局范围内有效
{
let n = 0;
var m = 1;
}
console.log(m); 1
console.log(n); // 报错
1.2 let不能重复声明,var 可以声明多次
let n = 1;
let n = 2;
var m = 3;
var m = 4;
n // 报错 'a' has already been declared
m // 4
1.3. let 不存在变量提升,var 会变量提升**
console.log(n); //ReferenceError: a is not defined
let n = "123456";
console.log(m); //undefined
var m = "123456";
/**
* var存在声明提前,输出m之前,m已经存在了,但是还没有赋值,
* 所以会输出 undefined。
* let不存在声明提前,所以报错
*/
二. const
const声明一个只读变量,声明之后不允许改变。意味着,一旦声明必须初始化,否则会报错。
const a; // SyntaxError: Missing initializer in const declaration
暂时性死区
如果块级作用域内存在let和const命令,它所声明的变量就“绑定”这个区域,不再受外部的影响。
var n = 123456;
if (true) {
console.log(n); // ReferenceError: n is not defined
let n = 654321;
}
//------------------------------------------------------
if (true) {
console.log(n); // ReferenceError: n is not defined
const n = 654321;
}