ES6 中的let和const

let聲明的變量只在let命令所在的代碼塊內(nèi)有效。
const聲明一個只讀的常量屋剑,一旦聲明,常量的值就不能改變趁桃。

let命令

用法:

{
 let a=0;
a    // 0
}
a     //會報錯 refenceError:a is not defined

代碼塊內(nèi)有效
let是在代碼塊內(nèi)有效,var是在全局范圍內(nèi)有效:

{
 let a=0;
 var b =1;
}
a    // referenceError: a is not defined
b     //1

不能重復(fù)聲明
let只能聲明一次 var 可以聲明多次:

let a =1油啤;
let a =2蟀苛;
var b =3;
var b=4;
a     // identifier  'a' has already been declared 
b     //4
for  循環(huán)計數(shù)器很適合用let
for(var i=0; i<10;i++) {
setTimeout(function(){
   console.log(i);
})
}
         //輸出十個 10
for (let j =0;jc10; j++){
 setTimeout(function(){
console.log(j);
})
}

//輸出12345

變量 i 是用 var 聲明的,在全局范圍內(nèi)有效幽告,所以全局中只有一個變量 i, 每次循環(huán)時裆甩,setTimeout 定時器里面的 i 指的是全局變量 i ,而循環(huán)里的十個 setTimeout 是在循環(huán)結(jié)束后才執(zhí)行嗤栓,所以此時的 i 都是 10。

變量 j 是用 let 聲明的叨叙,當(dāng)前的 i 只在本輪循環(huán)中有效,每次循環(huán)的 j 其實都是一個新的變量堪澎,所以 setTimeout 定時器里面的 j 其實是不同的變量擂错,即最后輸出12345。

不存在變量提升
let不存在變量提升樱蛤,var會變量提升:

console.log(a);         //ReferenceError: a is not defined
let a = "apple";
 
console.log(b);          //undefined
var b = "banana";

變量 b 用 var 聲明存在變量提升钮呀,所以當(dāng)腳本開始運行的時候,b 已經(jīng)存在了昨凡,但是還沒有賦值行楞,所以會輸出 undefined。

變量 a 用 let 聲明不存在變量提升土匀,在聲明變量 a 之前,a 不存在形用,所以會報錯就轧。

const命令
const聲明一個只讀變量,聲明之后不允許改變田度。意味著,一但聲明必須初始化镇饺,否則會報錯乎莉。
用法:

const PI="3.1415926";
PI     //3.1415926

const  my_age;   // syntaxError:missing initializer in const declaration

暫時性死區(qū):

var PI = "a";
if(true){
  console.log(PI);       // ReferenceError: PI is not defined
  const PI = "3.1415926";
}

ES6 明確規(guī)定,代碼塊內(nèi)如果存在 let 或者 const,代碼塊會對這些命令聲明的變量從塊的開始就形成一個封閉作用域惋啃。代碼塊內(nèi)哼鬓,在聲明變量 PI 之前使用它會報錯。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末边灭,一起剝皮案震驚了整個濱河市异希,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌绒瘦,老刑警劉巖称簿,帶你破解...
    沈念sama閱讀 221,430評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異惰帽,居然都是意外死亡憨降,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評論 3 398
  • 文/潘曉璐 我一進(jìn)店門该酗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來授药,“玉大人,你說我怎么就攤上這事垂涯∷副海” “怎么了?”我有些...
    開封第一講書人閱讀 167,834評論 0 360
  • 文/不壞的土叔 我叫張陵耕赘,是天一觀的道長骄蝇。 經(jīng)常有香客問我,道長操骡,這世上最難降的妖魔是什么九火? 我笑而不...
    開封第一講書人閱讀 59,543評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮册招,結(jié)果婚禮上岔激,老公的妹妹穿的比我還像新娘。我一直安慰自己是掰,他們只是感情好虑鼎,可當(dāng)我...
    茶點故事閱讀 68,547評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著键痛,像睡著了一般炫彩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上絮短,一...
    開封第一講書人閱讀 52,196評論 1 308
  • 那天江兢,我揣著相機(jī)與錄音,去河邊找鬼丁频。 笑死杉允,一個胖子當(dāng)著我的面吹牛邑贴,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播叔磷,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼拢驾,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了世澜?” 一聲冷哼從身側(cè)響起独旷,我...
    開封第一講書人閱讀 39,671評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎寥裂,沒想到半個月后嵌洼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,221評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡封恰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,303評論 3 340
  • 正文 我和宋清朗相戀三年麻养,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片诺舔。...
    茶點故事閱讀 40,444評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡鳖昌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出低飒,到底是詐尸還是另有隱情许昨,我是刑警寧澤,帶...
    沈念sama閱讀 36,134評論 5 350
  • 正文 年R本政府宣布褥赊,位于F島的核電站糕档,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏拌喉。R本人自食惡果不足惜速那,卻給世界環(huán)境...
    茶點故事閱讀 41,810評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望尿背。 院中可真熱鬧端仰,春花似錦、人聲如沸田藐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽汽久。三九已至茴晋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間回窘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評論 1 272
  • 我被黑心中介騙來泰國打工市袖, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留啡直,地道東北人烁涌。 一個月前我還...
    沈念sama閱讀 48,837評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像酒觅,于是被迫代替她去往敵國和親撮执。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,455評論 2 359