ES6總結 第二章:let & const注意事項

  1. for循環中,設置循環變量的那部分是一個副作用域,而循環體內部是一個單獨的子作用域。

  2. 暫時性死區:代碼塊內,使用let聲明變量之前,對該變量的操作都會拋出ReferenceError異常。
    let & const的一個重要性是其不出現變量提升。
    如果塊區中存在let和const命令,則這個塊區對這些命令聲明的變量從一開始就形成封閉作用域,只要在聲明前使用,就會報錯。
    注意:影響typeof安全性。

  3. const大致和let相似,但其實際上保證的是變量指向的那個內存地址不得改動。
    注意:使用freeze可以凍結對象及其屬性

const foo = Object.freeze ({ });
  1. ES6中:let, const, class命令聲明的全局變量不屬于頂層對象window的屬性。

  2. 解構賦值:
    原則:只要等號右邊的值不是對象或數組,就會先將其轉為對象,undefined和null無法轉為對象,所以解構賦值會失敗。

  • 解構不成功,變量的值就等于undefined。
let foo = [ ]; 
let [bar, foo] = [1];
  • 不完全解構,也是可以成功。
  • 等號右邊的值不具備Iterator接口就會報錯。只要某種數據結構具有Iterator接口,都可以采用數組形式的解構賦值。
  • 解構賦值允許默認值。ES6內部用“===”判斷一個位置是否有值,數組成員不嚴格等于undefined,默認值不生效(即可以賦值null)。
  1. 對象的解構
  • 對象解構賦值的屬性沒有次序,但變量必須與屬性同名。
  • 內部機制:先找到同名屬性,再賦值給對應的變量。真正被賦值的是后者。
  • 解構失敗,值為undefined。
  1. 圓括號與解構賦值的關系
  • 解構賦值允許等號左邊的模式之中不放置任何變量名。
  1. 解構賦值提取JSON對象數據很有用。
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。