【書名】:你不知道的JavaScript(上卷)
【作者】:Kyle Simpson
【本書總頁碼】:213
【已讀頁碼】:32
詞法化的過程會對源代碼中的字符進行檢查须喂,如果是有狀態(tài)的解析過程,還會賦予單詞語義臂寝。簡單地說,詞法作用域就是定義在詞法階段的作用域泉瞻。換句話說莽囤,詞法作用域是由你在寫代碼時將變量和塊作用域?qū)懺谀睦飦頉Q定的,因此當(dāng)詞法分析器處理代碼時會保持作用域不變(大部分情況下是這樣的)房官。
作用域查找會在找到第一個匹配的標(biāo)識符時停止趾徽。在多層的嵌套作用域中可以定義同名的標(biāo)識符,這叫作“遮蔽效應(yīng)”(內(nèi)部的標(biāo)識符“遮蔽”了外部的標(biāo)識符)翰守。
全局變量會自動成為全局對象(比如瀏覽器中的 window 對象)的屬性孵奶,因此可以不直接通過全局對象的詞法名稱,而是間接地通過對全局對象屬性的引用來對其進行訪問蜡峰。通過這種技術(shù)可以訪問那些被同名變量所遮蔽的全局變量了袁。但非全局的變量如果被遮蔽了,無論如何都無法被訪問到事示。
函數(shù)的詞法作用域都只由函數(shù)被聲明時所處的位置決定早像。
詞法作用域查找只會查找一級標(biāo)識符。如果代碼中引用了 foo.bar.baz肖爵,詞法作用域查找只會試圖查找 foo 標(biāo)識符卢鹦,找到這個變量后,對象屬性訪問規(guī)則會分別接管對 bar 和 baz 屬性的訪問。