2014-11-07 55 views
-1

我不知道爲什麼這個工程聲明javascript函數調用本身

(function Test() { 
    alert('x'); 
}()) 

但這不起作用

function Test() { 
    alert('x'); 
}() 

如何外括號改變事情的優先順序,並使其發揮作用?

+0

**以**'function'開頭的任何語句都是函數*聲明*,並且不可調用。如果函數出現在*表達式*中,則它是一個函數表達式,並且是可調用的。用paren開始聲明使其成爲表達式。你也可以使用'!function Test(){alert(x)}()',但這並不常見,而不是將整個東西包裝在parens中。 – 2014-11-07 00:31:51

+0

請參閱**自調用函數**部分 – dazedconfused 2014-11-07 00:35:00

+0

上的[函數定義](http://www.w3schools.com/js/js_function_definition.asp)。請刪除jQuery標籤。 – 2014-11-07 00:36:03

回答

-1

你可以用括號的圖像來明確你的操作。就像你做一些像3 * 2 + 4或3 *(2 + 4)的操作一樣。 當你

function Test() { alert('x'); }() 

領航員只是看到單獨2個括號,而當你做

(function Test() { alert('x'); }()) 

它看你要執行的功能。