2013-02-26 28 views
2

我正在閱讀說到Function definitions的ECMA 262 v5腳本部分。對於這兩個函數聲明和函數表達式,下列提到:所有函數聲明和表達式都是由幕後的被調用的新函數()創建的嗎?

返回如在 13.2

指定創建一個新的功能對象的結果是什麼在一節中提到的第一個步驟13.2是「創建一個新的原生ECMAScript對象...」,然後「將F的[[Class]]內部屬性設置爲」Function「

由於」創建新的Funciton對象「的措辭,想知道在幕後,函數聲明/表達式是c通過調用新函數(....)來重新調整?

+0

可能相關:[Function函數構造自身嗎?](http://stackoverflow.com/q/12881552/1048572) – Bergi 2013-02-26 20:52:56

回答

1

的ECMA腳本說明書的section 15.3.2.1談到新功能(...)的表達,和新的功能(...)表達本身是指相同的邏輯,如13.2節指定。關於新的功能(...)表達

子彈數11指定...

返回如在13.2指定傳遞數p作爲所述FormalParameterListopt和主體作爲函數體創建了新的功能的對象。作爲Scope參數傳入全局環境並嚴格按照嚴格標誌傳入。

13.2節是函數創建邏輯的單個源,是否創建函數表達式,函數聲明,或調用該函數的構造。

所以要回答這個問題,沒有。創建函數聲明/表達式不會調用新函數(...)。

0

由於「創建一個新的功能可按對象」,如果場景,函數聲明/表情背後的是通過調用新的功能(....)創造了我想知道的措辭?

不,它確實如此,創建一個新對象並使其成爲函數。你會發現在new Function其他場景後會發生什麼?相反,new Function也會在13.2中調用該函數實例。