var/const/let淺析

**出現(xiàn)的時(shí)期 **

var -->ES5
let const -->ES6

塊級(jí)作用域

ES6以前JS以var來(lái)聲明變量晨仑,以function來(lái)區(qū)分作用域藕帜,{}這種無(wú)法限定var的作用域意乓。
ES6出現(xiàn)后樱调,帶來(lái)了塊級(jí)作用域。if届良,for等可以產(chǎn)生一個(gè)花括號(hào)笆凌,花括號(hào)中的語(yǔ)句集合都屬于{塊},在塊中定義的變量在塊外是不可見(jiàn)的士葫,我們把從 ' { ' 開(kāi)始 ' } ' 結(jié)束的這一塊稱(chēng)為塊級(jí)作用域乞而。
在塊級(jí)作用域里,和函數(shù)作用域有相類(lèi)似的地方慢显,那就是當(dāng)函數(shù)調(diào)用完成后爪模,函數(shù)內(nèi)部的變量會(huì)被銷(xiāo)毀欠啤。那么塊級(jí)作用域……請(qǐng)看例子!

function test(){
(function(){
    for(var i=0;i<10;i++);
})();
console.log(i);
}
test();

想想看會(huì)輸出什么?結(jié)果是 i 未定義屋灌。為什么呢跪妥?這是因?yàn)閖s的閉包特性,for 語(yǔ)句在閉包內(nèi)声滥,當(dāng)function被調(diào)用結(jié)束后,i被銷(xiāo)毀侦香,所以訪問(wèn)不到落塑。

暫時(shí)性死區(qū)

暫時(shí)性死區(qū)(TDZ)是真正短暫的(基于時(shí)間),和不受空間條件限制的(基于位置)罐韩。

if(true){
    const fun = function(){//TDZ begin
        console.log(myVar);//OK
    }
    …
    let myVar = 3;//TDZ end
    fun();//TDZ 外部
}

變量提升

函數(shù)提升是把后面的變量都提到前面去憾赁。
這個(gè)還是用例子來(lái)說(shuō)

function test(){
    console.log(say);   
    var say = ' Hello ! ' ;   
}

不會(huì)報(bào)錯(cuò),輸出undefined散吵;
因?yàn)樽兞刻嵘迹瑫?huì)將上面的變成

function test(){
    var say;
    console.log(say);   
    say = ' Hello ! ' ;   
}

這個(gè)還是非常好理解的,如果你還在使用ES5的話矾睦,那就在書(shū)寫(xiě)的時(shí)候最好自己手動(dòng)提升晦款,這樣,編程的時(shí)候不容易出錯(cuò)枚冗。

函數(shù)提升

函數(shù)提升是把整個(gè)函數(shù)都提到前面去缓溅。

function test(){
    fun();
    function fun(){
        alert("fun");
    }
}
test(); 

但是這樣卻不行

function test(){
    fun();
    var fun =function f(){
        alert("fun");
    }
}
test(); 

WHY?
因?yàn)榱尬拢琂S中函數(shù)的寫(xiě)法坛怪,一種是函數(shù)表達(dá)式,另外一種是函數(shù)聲明方式股囊。只有函數(shù)聲明形式才能被提升袜匿。

三者的區(qū)別

  • let:
    作用域是塊級(jí),不能在同一塊級(jí)作用域中重復(fù)聲明稚疹,擁有暫時(shí)性死區(qū)居灯,沒(méi)有變量提升。
    當(dāng)進(jìn)入let作用域内狗,立即創(chuàng)建存儲(chǔ)空間穆壕;獲取或設(shè)置未初始的變量會(huì)拋異常,Reference error其屏;當(dāng)執(zhí)行到變量聲明的時(shí)候喇勋,若定義了值就賦值,若沒(méi)有值偎行,那就是udefined川背,變量在暫時(shí)性死區(qū)不能被訪問(wèn)贰拿,所以無(wú)法對(duì)它使用typeof。
  • const:
    作用域是塊級(jí)熄云,不能重復(fù)聲明,并且聲明的同時(shí)就要賦值膨更,擁有暫時(shí)性死區(qū),聲明常量缴允。
    在暫時(shí)性死區(qū)內(nèi)它不能被訪問(wèn)(獲取或設(shè)置)直到執(zhí)行到達(dá)聲明荚守。
  • var:
    作用域是函數(shù)作用域,可以重復(fù)聲明练般,沒(méi)有暫時(shí)性死區(qū)矗漾,有變量提升。
    當(dāng)進(jìn)入var的作用域薄料,立即為它創(chuàng)建存儲(chǔ)空間敞贡,變量會(huì)立即被初始化并賦值為undefined,當(dāng)執(zhí)行到變量聲明的時(shí)候摄职,若變量定義了值則會(huì)被賦值誊役。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市谷市,隨后出現(xiàn)的幾起案子蛔垢,更是在濱河造成了極大的恐慌,老刑警劉巖迫悠,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件啦桌,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡及皂,警方通過(guò)查閱死者的電腦和手機(jī)甫男,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)验烧,“玉大人板驳,你說(shuō)我怎么就攤上這事“穑” “怎么了若治?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)感混。 經(jīng)常有香客問(wèn)我端幼,道長(zhǎng),這世上最難降的妖魔是什么弧满? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任婆跑,我火速辦了婚禮,結(jié)果婚禮上庭呜,老公的妹妹穿的比我還像新娘滑进。我一直安慰自己犀忱,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布扶关。 她就那樣靜靜地躺著阴汇,像睡著了一般。 火紅的嫁衣襯著肌膚如雪节槐。 梳的紋絲不亂的頭發(fā)上搀庶,一...
    開(kāi)封第一講書(shū)人閱讀 51,365評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音铜异,去河邊找鬼哥倔。 笑死,一個(gè)胖子當(dāng)著我的面吹牛熙掺,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播咕宿,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼币绩,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了府阀?” 一聲冷哼從身側(cè)響起缆镣,我...
    開(kāi)封第一講書(shū)人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎试浙,沒(méi)想到半個(gè)月后董瞻,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡田巴,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年钠糊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片壹哺。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡抄伍,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出管宵,到底是詐尸還是另有隱情截珍,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布箩朴,位于F島的核電站岗喉,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏炸庞。R本人自食惡果不足惜钱床,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望埠居。 院中可真熱鬧诞丽,春花似錦鲸拥、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至懂衩,卻和暖如春撞叨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背浊洞。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工牵敷, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人法希。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓枷餐,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親苫亦。 傳聞我的和親對(duì)象是個(gè)殘疾皇子毛肋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容