讀書筆記-《你不知道的JS》-做用域

變量的賦值操做會執行兩個動做:函數

  • 編譯器在當前做用域 聲明 一個變量(若是以前有聲明,則忽略,繼續編譯)
  • 運行時,引擎在做用域查找該變量,若是找到就 賦值 ,不然拋異常

做用域是根據名稱查找變量的一套規則,肯定在何處以及如何查找變量

做用域鏈

做用域能夠嵌套,在當前做用域找不到某個變量時,引擎會在外層嵌套的做用域中繼續查找,直到找到該變量(找到第一個就中止)或抵達最外層的做用域(全局做用域)爲止作用域

ReferenceError 引用錯誤,同做用域判別失敗相關

TypeError 做用域判別成功,可是對結果的操做是非法或不合理的

LHS查詢 對變量進行賦值

RHS查詢 獲取變量的值

詞法做用域由書寫代碼時函數聲明的位置決定

函數做用域

屬於這個函數的所有變量均可以在整個函數的範圍內使用及複用編譯器

區別函數聲明和函數表達式的方法,若是function是第一個詞,那就是函數聲明

當即執行函數(IIFE)是一個函數表達式io

做用域分類

  • 函數做用域
  • 塊做用域
相關文章
相關標籤/搜索