1

可能重复:
函数前的感叹号有什么作用?

所以我遇到了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(){...})();但我在网上找不到任何东西来确认它。

4

1 回答 1

3

虽然@elias-van-ootegem 基本上是正确的,但许多浏览器会认为它是语法错误而没有爆炸。

function() { ... }() // Bad
!function() { ... }() // Good
(function() { ... })() // Better, more readable.
(function() { ... }()) // Best
于 2012-10-04T11:02:13.660 回答