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;//報錯
相關文章
相關標籤/搜索