变量声明的语法?var a=(function(){})()

Syntax of variable declaration? var a = (function() { })()

本文关键字:function 声明 语法 var 变量      更新时间:2023-09-26

可能重复:
JavaScript对象/函数/类声明周围的括号是什么意思?

我在一个网站上找到了以下代码。

var testModule = (function(){
    var counter = 0;
    return {
       incrementCounter: function() {
            return counter++;
        },
        resetCounter: function() {
            console.log('counter value prior to reset:' + counter);
            counter = 0;
        }
    };
})();

因此它遵循语法var a = (blah balh..)()

它到底是什么意思?像a =()()这样的变量声明的含义是什么。。

它定义了一个一次性函数并立即执行。您提供的代码名为Module Pattern——有关其属性的更多信息,请参阅此处:http://www.yuiblog.com/blog/2007/06/12/module-pattern/

一个正常的函数可以这样创建:

var f1 = function() {
  console.log('bar');
};

然后你可以这样称呼它:

f1();

但是在您提供的示例中,该函数被定义并执行一次,并且该函数返回一个具有两个函数的对象:incrementCounterresetCounter。你可以这样称呼它们:testModule.incrementCounter()testModule.resetCounter()

当您有一个单独的对象,并且想要封装一些只对闭包中定义的函数可用的属性时,模块模式非常有用。

执行匿名函数并将返回值分配给变量。