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

发布于 2024-12-28 15:40:52 字数 707 浏览 0 评论 0原文

可能的重复:
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 =()() 这样的变量声明是什么意思?

Possible Duplicate:
What do parentheses surrounding a JavaScript object/function/class declaration mean?

I have found the following code in a website .

var testModule = (function(){

    var counter = 0;

    return {

       incrementCounter: function() {

            return counter++;

        },

        resetCounter: function() {

            console.log('counter value prior to reset:' + counter);

            counter = 0;

        }

    };

})();

So it follows the syntax var a = (blah balh..)()

What does it actually mean? What is the meaning of variable declaration like a =()()..

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

我很坚强 2025-01-04 15:40:52

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

一个普通的函数可能会像这样创建:

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

然后您可以像这样调用它:

f1();

但在您提供的示例中,该函数定义并执行一次,该函数返回一个具有两个函数的对象:incrementCounter 和resetCounter。您可以像这样调用它们: testModule.incrementCounter()testModule.resetCounter()

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

It's defining a single-use function and executing it immediately. The code you provided is named the Module Pattern -- see here for more information about its properties: http://www.yuiblog.com/blog/2007/06/12/module-pattern/

A normal function might be created like this:

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

And you could subsequently call it like so:

f1();

But in the example you provided, the function is both defined and executed once, and that function returns an object with two functions: incrementCounter and resetCounter. You can call them like so: testModule.incrementCounter() and testModule.resetCounter()

The Module Pattern is useful when you have a single object and you want to encapsulate some properties which are only available to the functions defined in the closure.

水水月牙 2025-01-04 15:40:52

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

The anonymous function is executed and the return value is assigned to the variable.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文