2013-03-26 69 views
4

我發現在Javascript中一個奇怪的現象: 關於javascript函數

function() { 
    return 10; 
}(); 

這種結構不能在所有瀏覽器中運行,因爲它有一個語法錯誤。但這個建設工程(回報十):

+function() { 
    return 10; 
}(); 

爲什麼?

+4

Dup的:http://stackoverflow.com/questions/13341698/javascript-plus-sign-in-front-of-function - 名字 – jchapa 2013-03-26 20:05:22

+0

@jch - 好趕上! – Lix 2013-03-26 20:06:09

+0

每個版本在哪些瀏覽器上工作? – 2013-03-26 20:06:19

回答

2

+讓js引擎可以區分這個函數表達式和函數定義。

更多可讀性,我們通常使用

(function() { 
    return 10; 
})(); 

related article

+0

我認爲最好把執行元素放在外層,'(function(){return 10;}());' – ErikE 2013-03-26 20:14:53

+0

@ErikE爲什麼?我認爲我給出的形式是最常見的形式,在我看來,更容易看到函數被調用。 – 2013-03-26 20:16:56

+0

我認爲我的建議更容易看到該函數被調用。讀取它的開發人員看不到第一個結束括號,並認爲它已完成......函數調用被附加到函數本身,並且不會丟失。如果在'(function(){return 10;})[spaces _ _ _();'之間有空格,那該怎麼辦?這可能會讓人困惑,但是'(function(){return 10;} [spaces _ _ _]());'非常清楚地表明括號屬於之前的東西。 – ErikE 2013-03-26 20:27:57