2019独角兽企业重金招聘Python工程师标准>>>
1、let声明的变量只在所处的代码块内有效
{
let a = 10;
var b = 1;
}
console.log(a);//会报错:a is not defined
console.log(b);//输出1
2、let不存在变量提升,就是说let声明的变量必须先声明再使用
console.log(a);//会报错:a is not defined,因为没有变量提升
console.log(b);//undefined,因为有变量提升,b已存在但未赋值
let a = 10;
let b = 1;
3、let存在暂时性死区(temporal dead zone,TDZ)
如果区块中存在let或者const命令,区块对该命令声明的变量形成封闭作用域。也就是说在let、const命令生命之前,变量都是不可用的。
var temp = 123;
if(true){
console.log(temp);//输出123
var temp = 2;
}
if(true){
console.log(temp); //报错:temp is not defined,存在暂时性死区
let temp = 2;
}
4、let声明的变量不能重复声明
var a = 123;
var a = 12; //不报错
var b = 123;
let b = 12;//报错
let c = 123;
var c = 12;//报错
let d = 123;
let d = 12;//报错