javascript:这种语法是什么意思?

时间:2011-11-26 17:44:45

标签: javascript function

  

可能重复:
  Strange JavaScript syntax like this: (function(){//code}) ();?

就像这样:

(function () {
//codes here
})();

这是一个例子:

(function () {
    var D = TED.EditorCore,
        E = TED.extend,
        A = TED.EditorInstanceManager,
        B = TED.augmentObject;
    window.TED["SimpleEditor"] = C;

    function C(F) {
        C.superclass.call(this, F)
    }
    C.defaultConfig = {
        height: "100px",
        width: "400px",
        //blablabla...
        flashNumLimit: 10,
        didaDelay: 300,
        imageWidthLimit: 570
    };
    E(C, D, {
        getContentLength: function () {
            return Math.ceil(this.filteHTML(this.editArea.innerHTML, ["img", "br"]).replace(/<img[^>]*>/gi, "mm").replace(/<br[^>]*>/gi, "m").replace(/&nbsp;/gi, "m").replace(/[^\x00-\xff]/g, "mm").length / 2)
        },
        filteEditHTML: function () {
            return html = this.editArea.innerHTML.replace(/_moz_dirty=""/gi, "").replace(/\[/g, "[[-").replace(/\]/g, "-]]").replace(new RegExp("<\\/?(?:br[^>]*)>", "gi"), "[$1]").replace(new RegExp('<span([^>]*class="?at"?[^>]*)>', "gi"), "[span$1]").replace(new RegExp('<img([^>]*class="?(?:' + this.config.emptyClassName + "|" + this.config.smileyClassName + ')"?[^>]*)>', "gi"), "[img$1]").replace(/<[^>]*>/g, "").replace(/\[\[\-/g, "[").replace(/\-\]\]/g, "]").replace(new RegExp("\\[(/?(?:br|img|span)[^\\]]*)\\]", "gi"), "<$1>")
        },
        filteSubmitHTML: function () {
            this.reLayout();
            var G = this.editArea.innerHTML.replace(/_moz_dirty=""/gi, "").replace(/\[/g, "[[-").replace(/\]/g, "-]]").replace(new RegExp("<(/?(?:" + this.submitValidHTML.join("|") + ")[^>]*)>", "gi"), "[$1]").replace(new RegExp('<img([^>]*class="?(?:' + this.config.imageClassName + "|" + this.config.smileyClassName + "|" + this.config.flashClassName + "|" + this.config.musicClassName + ')"?[^>]*)>', "gi"), "[img$1]").replace(/<[^>]*>/g, "").replace(/\[\[\-/g, "[").replace(/\-\]\]/g, "]").replace(new RegExp("\\[(/?(?:" + this.submitValidHTML.join("|") + "|img)[^\\]]*)\\]", "gi"), "<$1>");
            var F = document.createElement("div");
            F.innerHTML = G;
            this.parseURL(F);
            return F.innerHTML
        }
    });
    B(C, A)
})();

(function (){})();究竟做了什么?

5 个答案:

答案 0 :(得分:4)

创建一个功能,立即执行它:

(function () {alert('1')} )();

答案 1 :(得分:4)

这意味着

制作一个功能性的东西:

(function () { ... })

然后执行它:

(function () { ... })()

你也可以这样想:

var x = (function () { ... })
x();

不使用该var执行此操作意味着该函数是匿名。这很有用,因为您不希望为那些仅用于某些事情的函数提供名称,而不是稍后调用。

答案 2 :(得分:2)

通常用于范围界定。它使var在函数本地函数内部并执行代码,避免可变冲突。

答案 3 :(得分:2)

正在声明/定义函数,然后立即调用。这通常用于通过在匿名函数中声明它们来限制变量的范围。

答案 4 :(得分:1)

这是一个自我调用函数,是闭包族的一部分。它保持范围清洁 - 在函数中创建的任何变量都只存在于那里;它们不会存在于window中。您可以在自我调用函数部分了解更多信息:http://robertnyman.com/2008/10/09/explaining-javascript-scope-and-closures/