ES6学习记录-let和var的区别

一、let声明的变量只在所处的代码块内有效

{
    let a = 10;
    var b = 1;
}
console.log(a);//会报错:a is not defined
console.log(b);//输出1

二、let不存在变量提高,就是说let声明的变量必须先声明再使用

console.log(a);//会报错:a is not defined,由于没有变量提高
console.log(b);//undefined,由于有变量提高,b已存在但未赋值

let a = 10;
let b = 1;

三、let存在暂时性死区(temporal dead zone,TDZ)

若是区块中存在let或者const命令,区块对该命令声明的变量造成封闭做用域。也就是说在let、const命令生命以前,变量都是不可用的。spa

var temp = 123;
if(true){
    console.log(temp);//输出123
    var temp = 2;
}
if(true){
    console.log(temp); //报错:temp is not defined,存在暂时性死区
    let temp = 2;
}

四、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;//报错
相关文章
相关标签/搜索