2012-06-29 27 views

回答

5

這是立即執行的匿名函數。它的返回值分配給obj。例如:

var obj = (function() { 
    return 10; 
}()); //Notice that calling parentheses can go inside or outside the others 

console.log(obj); //10 

他們經常被用來引入一個新的範圍,所以你不要雜亂的代碼在執行範圍:

var obj = (function() { 
    var something = 10; //Not available outside this anonymous function 
    return something; 
}()); 

console.log(obj); //10 

注意,因爲這是一個功能表達 ,而不是函數聲明,它應該在關閉花括號後面有一個分號。

+0

@WHITECOLOR - 不客氣,很高興我可以幫助:) –

5

它被稱爲立即實例化函數。它運行該函數,並將返回值分配給obj。您可以使用它創建一個範圍或類,您可以在其中使用閉包將某些變量保留在該範圍內。關於這個問題請參閱John Resigs page

因此,如果函數是這樣的:

var obj = (function(n){ 
    return 2+n; 
})(3); 

obj的價值將是5

+0

非常感謝 - ) – WHITECOLOR