2014-12-19 54 views
0

用於在JavaScript中存儲函數名稱的數據結構的本質是什麼?JavaScript中的命名和未命名函數

換句話說,評估此代碼時存儲的字符串「Foo」(即函數名稱Foo)在哪裏?

function Foo() {} 

另外,做匿名函數有一個隱藏的名字嗎?

回答

1

哪裏是字符串「foo」(即,函數foo的名稱)存儲

在全球範圍內。

您可以通過使用self invoking anonymous function避免這種情況:

(function() { 
    alert('Hello World'); 
})(); 

,或者通過局部範圍內關聯一個變種的功能:

function myBigFunction() { 
var myfunction = function foo(){alert('Hello World');}; 
} 

沒有隱藏名字。

+0

好的,我知道這一點。我正在考慮是否存在類似於保存功能元數據的執行上下文(即解釋器內部的數據結構)的東西? – Ben 2014-12-19 11:09:39

+0

@如果有它,它不是可訪問的api,afaik的一部分,並且將依賴於特定的解釋器。 – NimChimpsky 2014-12-19 11:11:55