ES6學習筆記1

let命令

  • let命令聲明的變量只在所在代碼塊內生效,適用于for循環(huán)中的變量栏尚。經(jīng)典的閉包問題如果用let來作為循環(huán)變量的話归苍,變量i是let聲明的,當前的i只在本輪循環(huán)有效麸恍,所以每一次循環(huán)的i其實都是一個新的變量灵巧,所以最后輸出的是6。
var a = [];
for (let i = 0; i < 10; i++) {
  a[i] = function () {
    console.log(i);
  };
}
a[6](); // 6

JS的for循環(huán)有個特別之處抹沪,設置for循環(huán)變量的部分是一個父作用域刻肄,而其循環(huán)體是一個子作用域。

  • let命令不存在變量提升融欧,變量在let命令定義語句之前使用的話敏弃,會報錯。
  • let命令的暫時性死區(qū):(對應到c++是很容易理解的)
    暫時性死區(qū)的本質就是噪馏,只要一進入當前作用域麦到,所要使用的變量就已經(jīng)存在了,但是不可獲取欠肾,只有等到聲明變量的那一行代碼出現(xiàn)瓶颠,才可以獲取和使用該變量。
  • let不允許在相同作用域內刺桃,重復聲明同一個變量粹淋。

塊級作用域

我們知道ES5沒有塊級作用域,但這會帶來什么弊端虏肾?

  • temp變量的使用廓啊,沒有塊級作用域意味著我們不能舒服得重用一個變量名。如下:
var tmp = new Date();

function f() {
  console.log(tmp);
  if (false) {
    var tmp = 'hello world';
  }
}

f(); // undefined

在function作用域中封豪,tmp因為變量提升谴轮,console語句打印的是未初始化的tmp。而我們實際只是想重用一下tmp這個變量名而已吹埠。立即調用表達式被let塊級作用域替換

  • 塊級作用域與函數(shù)聲明,只對 ES6 的瀏覽器實現(xiàn)有效的三條規(guī)則
  1. 允許在塊級作用域內聲明函數(shù)第步。
  2. 函數(shù)聲明類似于var,即會提升到全局作用域或函數(shù)作用域的頭部缘琅。
  3. 同時粘都,函數(shù)聲明還會提升到所在的塊級作用域的頭部。

在瀏覽器的 ES6 環(huán)境中刷袍,塊級作用域內聲明的函數(shù)翩隧,行為類似于var聲明的變量。

const命令

  • const聲明一個只讀的常量呻纹,且一聲明就要直接初始化堆生。只在聲明所在的塊級作用域內有效专缠。如果是對象指針,那么只是這個指針不可變淑仆,對象里面的屬性可以改變涝婉。

如果真的想將對象凍結,應該使用Object.freeze方法蔗怠。此處與vue的凍結對象讓其不再滿足響應式變換的方法一致墩弯。

聲明變量的方式:var,function寞射,let渔工,const,class怠惶,import(后四為ES6增加)

頂層對象的屬性

  • ES5頂層對象的屬性與全局變量掛鉤涨缚,會帶來很多問題,很容易產(chǎn)生全局變量污染策治。ES6 為了改變這一點脓魏,一方面規(guī)定,為了保持兼容性通惫,var命令和function命令聲明的全局變量茂翔,依舊是頂層對象的屬性;但let命令履腋、const命令珊燎、class命令聲明的全局變量,不屬于頂層對象的屬性遵湖。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末悔政,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子延旧,更是在濱河造成了極大的恐慌谋国,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件迁沫,死亡現(xiàn)場離奇詭異芦瘾,居然都是意外死亡,警方通過查閱死者的電腦和手機集畅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門近弟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人挺智,你說我怎么就攤上這事祷愉。” “怎么了?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵谣辞,是天一觀的道長迫摔。 經(jīng)常有香客問我,道長泥从,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任沪摄,我火速辦了婚禮躯嫉,結果婚禮上,老公的妹妹穿的比我還像新娘杨拐。我一直安慰自己祈餐,他們只是感情好,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布哄陶。 她就那樣靜靜地躺著帆阳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪屋吨。 梳的紋絲不亂的頭發(fā)上蜒谤,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天,我揣著相機與錄音至扰,去河邊找鬼鳍徽。 笑死,一個胖子當著我的面吹牛敢课,可吹牛的內容都是我干的阶祭。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼直秆,長吁一口氣:“原來是場噩夢啊……” “哼濒募!你這毒婦竟也來了?” 一聲冷哼從身側響起圾结,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤瑰剃,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后疫稿,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體培他,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年遗座,在試婚紗的時候發(fā)現(xiàn)自己被綠了舀凛。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡途蒋,死狀恐怖猛遍,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤懊烤,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布梯醒,位于F島的核電站,受9級特大地震影響腌紧,放射性物質發(fā)生泄漏茸习。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一壁肋、第九天 我趴在偏房一處隱蔽的房頂上張望号胚。 院中可真熱鬧,春花似錦浸遗、人聲如沸猫胁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽弃秆。三九已至,卻和暖如春髓帽,著一層夾襖步出監(jiān)牢的瞬間菠赚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工氢卡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留锈至,地道東北人。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓译秦,卻偏偏與公主長得像峡捡,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子筑悴,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內容

  • let 命令 塊級作用域 const 命令 頂層對象的屬性 global 對象 let 命令 基本用法 ES6 新...
    嘉奇呦_nice閱讀 1,630評論 0 2
  • 本文屬個人筆記,不做詳解突勇,僅供參考装盯! let命令 基本用法 ES6 新增了let命令,用來聲明變量甲馋。它的用法類似于...
    R_yan閱讀 29,019評論 6 18
  • let 和 const 命令 let 命令 塊級作用域 const 命令 頂層對象的屬性 gl...
    安小明閱讀 981評論 0 0
  • let 命令 塊級作用域 const 命令 頂層對象的屬性 global 對象 let 命令 基本用法 ES6 新...
    卞卞村長L閱讀 595評論 0 0
  • 今天買了個番茄鐘放在辦公桌上埂奈,開始學萌姐的番茄工作法。開始25分鐘的計時定躏,剛開始一會就想去看手機账磺,看群聊里的...
    藍瀾_m6閱讀 202評論 0 0