ES6的變量定義深入解析

在es6中變量的定義方式有:var 、function 早敬、let 忌傻、const 、import搞监、 class水孩。

let

使用let來(lái)定義變量,其在對(duì)應(yīng)的塊級(jí)作用域才能被訪問(wèn)到腺逛。


let定義變量只可以定義一次荷愕,但可以進(jìn)行多次的取值與賦值。


1.基本用法:

輸出的結(jié)果:

從輸出的結(jié)果看棍矛,使用var定義的變量在塊級(jí)作用域外可以被訪問(wèn)到(會(huì)有變量的提升)安疗。使用let定義的變量不能在塊級(jí)作用域外被訪問(wèn)到(不存在變量的提升),則出現(xiàn)報(bào)錯(cuò)够委。但是發(fā)現(xiàn)輸出中居然出現(xiàn) typeof 是什么鬼荐类?它對(duì)b的檢測(cè)返回的是undefined。這是因?yàn)閠ypeof是對(duì)數(shù)據(jù)的類型檢測(cè)茁帽,會(huì)在當(dāng)前作用域?qū)ふ襜玉罐,如果找不到則會(huì)繼續(xù)向上尋找,直到找到window上潘拨,還是沒(méi)有被找到吊输,就會(huì)返回undefined作為這個(gè)變量的值。當(dāng)使用typeof檢測(cè)undefined的類型時(shí)自然就會(huì)返回undefined铁追。

2.避免產(chǎn)生閉包:

閉包:是有權(quán)限訪問(wèn)其他函數(shù)內(nèi)部變量或函數(shù)季蚂,既可以稱為閉包。

接下來(lái)直接附上代碼來(lái)進(jìn)行分析

輸出結(jié)果為:

我們可以發(fā)現(xiàn)在循環(huán)中使用var 定義的 i , 在最后的輸出中答案是 10琅束,而使用let 定義的 i扭屁,輸出正是我們期待的值。因此涩禀,var聲明的i在全局范圍內(nèi)都有效料滥,每次循環(huán)都會(huì)覆蓋舊值,產(chǎn)生閉包艾船。let 聲明的i只在本輪循環(huán)有效葵腹,所以每一次循環(huán)的i都是一個(gè)新的變量高每。

3.暫時(shí)性死區(qū)(臨時(shí)死區(qū))

使用let定義的變量,不能進(jìn)行變量的提升礁蔗。而且定義必須是要放在賦值之前觉义。如果我們把變量的賦值放在定義之前,則會(huì)報(bào)錯(cuò)浴井。這就造成了let定義變量的臨時(shí)死區(qū)的出現(xiàn)。

4.屏蔽window

js中使用var定義的變量相當(dāng)于在window上定義的一個(gè)屬性霉撵,而使用es6的let和const定義的磺浙,則會(huì)屏蔽window,不會(huì)再window上定義一個(gè)與之對(duì)象的屬性徒坡。

通過(guò)上面的代碼撕氧,在瀏覽器控制臺(tái)中可以看出a,b是否變成window上的一個(gè)屬性?

輸出:

可以看出,使用var定義的變量a變成了window的一個(gè)屬性喇完,而使用let定義的變量b伦泥,則在window上不存在,返回undefined崇猫。所以es6中定義的變量能夠有效的屏蔽window午笛,防止過(guò)多的變量定義在全局上酣倾,造成全局空間的污染。

大家下去可以嘗試一下防楷,const會(huì)屏蔽window么?這里直接告訴大家答案:可以则涯。

const

const在日常使用中是用來(lái)定義常量的复局。如何確認(rèn)是常量?通過(guò)一句話來(lái)判斷粟判。


只進(jìn)行一次賦值操作亿昏,N次取值操作的變量,都可以看作是常量


這也是const在let定義變量后的一個(gè)選擇档礁。const可以防止已經(jīng)被賦值的變量被再次賦值角钩。

定義變量在開(kāi)發(fā)中司空見(jiàn)慣的事情,在ES6中合理的使用let與const是能很大的避免在開(kāi)發(fā)中出現(xiàn)不易察覺(jué)的錯(cuò)誤事秀。同時(shí)定義變量也是一個(gè)對(duì)安全機(jī)制的考驗(yàn)彤断。

當(dāng)要定義一個(gè)可以被多次取值和賦值操作的變量時(shí),你會(huì)優(yōu)先考慮用let還是const易迹?我想只要是前端開(kāi)發(fā)者都能說(shuō)出是使用let宰衙。在這里這個(gè)答案是正確的,但是請(qǐng)你在回答這個(gè)答案的時(shí)候考錄一下安全問(wèn)題睹欲,再進(jìn)行回答供炼。

我會(huì)再考慮安全機(jī)制最小原則的前提下優(yōu)先使用const一屋,如果const不能滿足我的條件,再下一步考慮let定義袋哼,甚至使用var都是合理的冀墨。

原創(chuàng)文章,轉(zhuǎn)載請(qǐng)注明出去:http://www.reibang.com/p/13c5edcba9a9

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末涛贯,一起剝皮案震驚了整個(gè)濱河市诽嘉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌弟翘,老刑警劉巖虫腋,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異稀余,居然都是意外死亡悦冀,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門睛琳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)盒蟆,“玉大人,你說(shuō)我怎么就攤上這事师骗±龋” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵丧凤,是天一觀的道長(zhǎng)募闲。 經(jīng)常有香客問(wèn)我,道長(zhǎng)愿待,這世上最難降的妖魔是什么浩螺? 我笑而不...
    開(kāi)封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮仍侥,結(jié)果婚禮上要出,老公的妹妹穿的比我還像新娘。我一直安慰自己农渊,他們只是感情好患蹂,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著砸紊,像睡著了一般传于。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上醉顽,一...
    開(kāi)封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天沼溜,我揣著相機(jī)與錄音,去河邊找鬼游添。 笑死系草,一個(gè)胖子當(dāng)著我的面吹牛通熄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播找都,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼唇辨,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了能耻?” 一聲冷哼從身側(cè)響起赏枚,我...
    開(kāi)封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎晓猛,沒(méi)想到半個(gè)月后嗡贺,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鞍帝,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了煞茫。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片帕涌。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖续徽,靈堂內(nèi)的尸體忽然破棺而出蚓曼,到底是詐尸還是另有隱情,我是刑警寧澤钦扭,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布纫版,位于F島的核電站,受9級(jí)特大地震影響客情,放射性物質(zhì)發(fā)生泄漏其弊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一膀斋、第九天 我趴在偏房一處隱蔽的房頂上張望梭伐。 院中可真熱鬧,春花似錦仰担、人聲如沸糊识。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)赂苗。三九已至,卻和暖如春贮尉,著一層夾襖步出監(jiān)牢的瞬間拌滋,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工绘盟, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鸠真,地道東北人悯仙。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像吠卷,于是被迫代替她去往敵國(guó)和親锡垄。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353