我发现了一些我不知道的JavaScript语法,我甚至不知道它是如何被调用的,或者是什么,所以我找不到任何文档。
我在MDC Doc Center上找到了它:
var Counter = (function() {
var privateCounter = 0;
function changeBy(val) {
privateCounter += val;
}
return {
increment: function() {
changeBy(1);
},
decrement: function() {
changeBy(-1);
},
value: function() {
return privateCounter;
}
}
})();
我感兴趣的部分是:
var Counter = (function() {})();
圆括号有什么作用?如何调用它以及可以在何处使用它?
答案 0 :(得分:1)
(function() {})()
是一个立即执行的函数。
这会在代码块周围创建私有范围。这也可以创建一个闭包,它可以在函数结束后保持状态。
()
周围需要function() {}
,因为function() {}()
是非法声明(JS解析器失败)。
另外,习惯是确保在()
中包装一个立即执行的函数,以便代码的读者知道他们应该对函数的返回值而不是函数感兴趣。
答案 1 :(得分:0)
这是模块模式。它通常用于创建单身人士。看到这个答案:
答案 2 :(得分:0)
考虑何时有一个名为a的函数:
function a() {
alert("hi");
}
你这样称呼它:
a();
在(function() {})()
中,您只是跳过事先定义函数的部分。一下子,你已经定义了一个未命名的函数并调用它。