2012-02-02 59 views

回答

1

匿名函數是一個沒有名字。例如,你可以這樣做:

(function(){ alert("Hello World!") })(); 

這將創建一個沒有名字的函數,立即調用它。如果代碼導致引發異常,則JavaScript運行時將報告匿名函數中的失敗。

此外,函數本身也是一個類,其名稱爲Function。你可以使用這個類來定義這樣的新功能(而不是內置的語法):

(new Function("x", "y", "return x+y"))(1, 2); 

這是幾乎一樣的文字:

(function(x, y) { return x + y })(1, 2); 

這給你偷看轉化爲JavaScript功能的面向對象的特性。

0

匿名函數是一個沒有名字的函數。他們不是具體爲Javascript,看到http://en.wikipedia.org/wiki/Anonymous_function

對於JS,基本上不是這樣的:

function myFunc() { } 

你可以這樣做:

var myFunc = function() { } 
+0

-1請再看看這個問題 - 你會發現問題是關於函數anonymous(){'從控制檯 - 請參閱截圖OP包括。 – Tadeck 2012-02-02 19:49:21

1

當調用Function()功能(這是一個它返回給你一個函數。以這種方式動態創建的函數沒有名稱,所以給它一個名稱「anonymous」。

參見:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function

+0

'+ 1' - 綁定到HTML元素的函數也是匿名的。例如,如果你有''並且在調試器下查看'foo.onclick',你會得到同樣的結果。 – 2012-02-02 19:53:51

+0

你的參數'test'指定了函數的代碼體。在調試器中沒有(標準)方法設置函數的名稱。 – 2012-02-02 19:54:16

1

這是一個古怪的方式Function.prototype.toString多個瀏覽器的實現呈現通過Function構造函數創建的函數,但它並不重要,它不出現在任何版本的EcmaScript規範。

通常命名函數

function anonymous(x) { 
    if (x) { 
    alert('hi'); 
    } else { 
    anonymous(!x); 
    } 
} 

alert不管傳遞的價值,因爲該函數的名稱可用於遞歸調用它(模IE漏洞),但這是不符合的情況下通過new Function創建anonymous

(new Function('x', 'if (x) alert("hi"); else anonymous(!x);'))(false) 

失敗並顯示錯誤。

+0

+1 for *「這是一個怪癖......它並不重要,它不會出現在任何版本的EcmaScript規範中。」*。 '函數();匿名(); // ReferenceError' – 2012-02-02 20:06:28

相關問題