2012-01-31 59 views
0

可能重複:
What do parentheses surrounding a JavaScript object/function/class declaration mean?
What does this javascript syntax mean?
What does this 「(function(){});」, a function inside brackets, mean in javascript?這個語法是什麼意思? (函數(){//代碼})()

在下面的代碼正在執行匿名函數。

var a= 1; 
var b =2;   
(function() { 
    var b = 3; 
    a += b; 
})(); 
document.write(a + " "+ b); 

1)圍繞函數定義放括號是幹什麼用的?

2)在右括號之後放()是做什麼的?

+0

閱讀: http://stackoverflow.com/questions/593509/javascript-syntax-function-calls-and-using-parenthesis 希望這有助於:) – 2012-01-31 08:29:59

回答

2

執行它把function() { ... }圍繞()使得它與聲明的表達式。因爲它是一個表達式,它產生一個函數值,最後調用生成的函數()

考慮替代

function() { 
    var b = 3; 
    a += b; 
}(); 

這會產生一個語法錯誤作爲()基本上嘗試調用語句。

(function() { 
    var b = 3; 
    a += b; 
}); 

這產生了一個永遠不會被調用的對象function

0

嗯,你說,它在第一線,代碼創建了一個匿名函數,然後不帶參數(尾隨括號)

+0

不知道爲什麼你的答案沒有任何評論,因爲你的答案在我的非專家的Javascript意見中看起來有效。 – CadentOrange 2012-01-31 08:41:12

0

它是一個函數自我執行,如果你想創建一個範圍(或定義本地變量),因爲JavaScript沒有塊範圍,需要一個函數。

0

好的,你的第一個問題答案只是覆蓋了hole函數,沒有它的功能將被執行,第二個是沒有參數的匿名函數。