《ECMAScript 6 入門(mén)》let和const

let 命令

let 命令印衔,用來(lái)聲明變量。類似 var吸申,但是只在 let 命令所在的代碼塊內(nèi)有效。

{
  let a = 10;
  var b = 1;
}

a // ReferenceError: a is not defined.
b // 1

for 循環(huán)還有一個(gè)特別之處享甸,就是設(shè)置循環(huán)變量的那部分是一個(gè)父作用域截碴,而循環(huán)體內(nèi)部是一個(gè)單獨(dú)的子作用域。

for (let i = 0; i < 3; i++) {
  let i = 'abc';
  console.log(i);
}
// abc
// abc
// abc

上面代碼輸出3次 abc蛉威。表明代碼塊內(nèi)容變量 i 與循環(huán)變量 i 不在同一個(gè)作用域日丹,有各自單獨(dú)的作用域。

不存在變量提升

var 命令會(huì)發(fā)生“變量提升”現(xiàn)象蚯嫌,即變量可以在聲明之前使用哲虾,值為 undefined
let 改變了語(yǔ)法行為择示,一定先聲明后使用束凑。

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

只要塊級(jí)作用域內(nèi)存在 let 命令,它所聲明的變量就“綁定”這個(gè)區(qū)域栅盲,不再受到外部影響汪诉。

var tmp = 123;
if (true) {
  tmp = 'abc'; //ReferenceError
  let tmp;
}

** ES6 明確規(guī)定,如果區(qū)塊內(nèi)存在 letconst 命令,這個(gè)區(qū)塊對(duì)這些命令聲明的變量形成封閉作用域扒寄。 **

typeof 不在是一個(gè)安全的操作

typeof x; //ReferenceError
let x;

如果一個(gè)變量沒(méi)有被聲明鱼鼓,不會(huì)報(bào)錯(cuò)。

不允許重復(fù)聲明


塊級(jí)作用域

ES6 的 let 為 JavaScript 新增了塊級(jí)作用域该编。
允許塊級(jí)作用域的任意嵌套迄本。
外層作用域無(wú)法讀取內(nèi)層作用域的變量。
內(nèi)層可以定義外層同名的變量课竣。

do 表達(dá)式

塊級(jí)作用域是一個(gè)語(yǔ)句嘉赎,講多個(gè)操作封裝在一起,沒(méi)有返回值于樟。
現(xiàn)在有一個(gè)提案曹阔,使它變?yōu)?do 表達(dá)式。

let x = do {
  let t = f();
  t * t + 1;
}

上面代碼隔披,變量x會(huì)得到整個(gè)塊級(jí)作用域的返回值。


const命令

const 聲明一個(gè)只讀的常量寂拆。一旦聲明奢米,值不能改變。

本質(zhì)

const 保證的是變量指向的內(nèi)存地址不得改動(dòng)纠永。
當(dāng)?shù)刂分赶蛞粋€(gè)對(duì)象時(shí)鬓长,對(duì)象本身是可變,可以添加新屬性尝江。
如果真的想將對(duì)象凍結(jié)涉波,可以使用 Object.freeze 方法。

const foo = Object.freeze({});

// 常規(guī)模式時(shí)炭序,下面一行不起作用啤覆;
// 嚴(yán)格模式時(shí),改行會(huì)報(bào)錯(cuò)
foo.prop = 123;

除了將對(duì)象本身凍結(jié)惭聂,對(duì)象的屬性也應(yīng)該凍結(jié)窗声。下面是一個(gè)將對(duì)象徹底凍結(jié)的函數(shù)。

var constantize = (obj) => {
  Object.freeze(obj);
  Object.keys(obj).forEach( (key, i) => {
    if ( typeof obj[key] === 'object' ) {
      constantize( obj[key] );
    }
  })
}

ES6聲明變量的六種方法

var辜纲、function笨觅、letconst耕腾、import见剩、class

頂層對(duì)象的屬性

ES5時(shí),瀏覽器中的頂層對(duì)象指的是 window扫俺,Node指的是 global 對(duì)象苍苞。
ES6為了改變這一點(diǎn),varfunction 命令聲明和ES5保持一致牵舵,let 命令柒啤、const 命令倦挂、class 命令聲明的全局變量,不屬于頂層對(duì)象的屬性担巩。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末方援,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子涛癌,更是在濱河造成了極大的恐慌犯戏,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拳话,死亡現(xiàn)場(chǎng)離奇詭異先匪,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)弃衍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)呀非,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人镜盯,你說(shuō)我怎么就攤上這事岸裙。” “怎么了速缆?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵降允,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我艺糜,道長(zhǎng)剧董,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任破停,我火速辦了婚禮翅楼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘辱挥。我一直安慰自己犁嗅,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布晤碘。 她就那樣靜靜地躺著褂微,像睡著了一般。 火紅的嫁衣襯著肌膚如雪园爷。 梳的紋絲不亂的頭發(fā)上宠蚂,一...
    開(kāi)封第一講書(shū)人閱讀 51,190評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音童社,去河邊找鬼求厕。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的呀癣。 我是一名探鬼主播美浦,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼项栏!你這毒婦竟也來(lái)了浦辨?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤沼沈,失蹤者是張志新(化名)和其女友劉穎流酬,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體列另,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡芽腾,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了页衙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片摊滔。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖店乐,靈堂內(nèi)的尸體忽然破棺而出惭载,到底是詐尸還是另有隱情,我是刑警寧澤响巢,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站棒妨,受9級(jí)特大地震影響踪古,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜券腔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一伏穆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧纷纫,春花似錦枕扫、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至染簇,卻和暖如春参滴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背锻弓。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工砾赔, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓暴心,卻偏偏與公主長(zhǎng)得像妓盲,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子专普,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

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

  • let 命令 塊級(jí)作用域 const 命令 頂層對(duì)象的屬性 global 對(duì)象 let 命令 基本用法 ES6 新...
    卞卞村長(zhǎng)L閱讀 594評(píng)論 0 0
  • 本文屬個(gè)人筆記,不做詳解击胜,僅供參考亏狰! let命令 基本用法 ES6 新增了let命令,用來(lái)聲明變量偶摔。它的用法類似于...
    R_yan閱讀 29,019評(píng)論 6 18
  • let 命令 塊級(jí)作用域 const 命令 頂層對(duì)象的屬性 global 對(duì)象 let 命令 基本用法 ES6 新...
    嘉奇呦_nice閱讀 1,630評(píng)論 0 2
  • let 和 const 命令 let 命令 塊級(jí)作用域 const 命令 頂層對(duì)象的屬性 gl...
    安小明閱讀 981評(píng)論 0 0
  • 其實(shí)我并沒(méi)有那么多耐心暇唾,有的時(shí)候我誆騙自己我還是個(gè)孩子,好讓自己找尋一點(diǎn)依靠辰斋。你哭的我束手無(wú)策策州,只能關(guān)懷的憑靠著你...
    墨涵Cynthia閱讀 708評(píng)論 0 0