可能重复:
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(/ /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 (){})();
究竟做了什么?
答案 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/。