《ECMAScript 6 入門》讀書筆記

阮一峯老師開源做品javascript

書上的示例代碼能夠經過 在線網站代碼調試工具 JS Bin 調試。html

做用域

做用域鏈

  • 每一個變量或函數經過執行環境 (execution context) 定義了其有權訪問的其餘數據,決定了他們各自的行爲;java

  • 全局執行環境是最頂層的執行環境,根據宿主環境的不一樣,表示全局執行環境的對象也不一樣:在瀏覽器中爲 window 或 self 對象,在 Node.js 中爲 global;es6

  • 每一個執行環境都有一個與之相關聯的變量對象 (variable object) ,存儲了改環境中定義的全部變量和函數;瀏覽器

  • 做用域(scope chain) 存儲了與當前執行環境相關的全部變量對象,第一個爲當前執行環境關聯的變量對象,而後是包含環境的變量對象,直至全局執行環境的變量對象,即全局執行環境;函數

  • 在代碼中查找變量的值稱爲變量解析(variable name resolution),查找順序是沿做用域鏈一級一級向外搜索;工具

全局做用域

函數做用域

塊級做用域

函數聲明

  • ES5 規定函數只能在頂層做用域和函數做用域之中聲明,不能在塊級做用域聲明,但瀏覽器爲兼容舊代碼,仍容許在塊級做用域中聲明;網站

  • ES6 明確容許函數在塊級做用域聲明,但應儘可能使用函數表達式形式,以下:調試

let f = function () {
    return a;
  };

let 相比較 var 的不一樣點

  • 只在它所在的代碼塊有效;code

  • 只能先聲明後使用,不存在變量提高;

  • 在其聲明所在的代碼塊,不受外部影響,造成暫時性死區;

  • 不能重複聲明;

相關文章
相關標籤/搜索