我正在閱讀ECMA 262 5 specification的執行上下文/詞彙環境部分。它指出了以下內容:(強調增加)函數表達式是否有其自己的作用域/詞法環境
詞法環境是一種規範類型,用於基於ECMAScript代碼的詞法嵌套結構來定義標識符與特定變量和函數的關聯。詞法環境由一個環境記錄和一個可能爲空的外部詞法環境引用組成。通常,詞法環境與某些ECMAScript代碼的特定語法結構相關聯,例如函數聲明,WithStatement或TryStatement的Catch子句,並且每次評估此類代碼時都會創建一個新的詞法環境。
我注意到它沒有提到爲函數表達式創建一個詞法環境。是爲函數表達式創建的詞法環境,還是僅爲函數聲明創建的環境?我錯過了什麼嗎?
編輯:我注意到,功能碼將有its own execution context,這就是爲什麼我也困惑,爲什麼函數表達式沒有在詞法環境一節中提到。
因爲例子列表以「such as」開頭,所以我不認爲它是詳盡無遺的。 – Pointy 2013-02-22 22:41:11
[第13節](http://www.ecma-international.org/ecma-262/5.1/#sec-13)似乎表明,僅爲具有名稱的函數表達式創建新的詞彙環境(而不是爲匿名函數表達式或函數聲明)。但我必須錯誤地解釋它。 – 2013-02-22 23:06:33