2012-10-04 126 views
1

可能重複:
What does the exclamation mark do before the function?這是什麼!一部分!function(){...}();意思?

所以我遇到使用通過Twitter分享按鈕代碼如下:

!function (d, s, id) { 
    var js, fjs = d.getElementsByTagName(s)[0]; 
    if (!d.getElementById(id)) { 
     js = d.createElement(s); 
     js.id = id; 
     js.src = "//platform.twitter.com/widgets.js"; 
     fjs.parentNode.insertBefore(js, fjs); 
    } 
}(document, "script", "twitter-wjs"); 

而我只是想知道!function位做了什麼。

我猜是(function(){...})();的簡稱,但是我在網上找不到任何東西來確認它。

+0

啊,我做了一個搜索,但當然搜索 「功能!」 的不利於做多:/ –

回答

3

雖然@ elias-van-ootegem大部分都是正確的,但很多瀏覽器都會認爲它是一個沒有爆炸的語法錯誤。 @Quentin感謝

function() { ... }() // Bad 
!function() { ... }() // Good 
(function() { ... })() // Better, more readable. 
(function() { ... }()) // Best 
+0

'(函數(){...}())'甚至更好: ) – fcalderan

+0

爲什麼呢?..... – Nathaniel

+0

看到http://stackoverflow.com/a/12259808/1098851最後一段 – fcalderan

相關問題