【问题标题】:What does this "(function(){});", a function inside brackets, mean in javascript? [duplicate]这个“(function(){});”,括号内的函数,在javascript中是什么意思? [复制]
【发布时间】:2011-05-01 21:56:48
【问题描述】:

可能的重复:
What does this mean? (function (x,y)){…}){a,b); in JavaScript
What do parentheses surrounding a JavaScript object/function/class declaration mean?

大家好

我不知道以下是做什么的:

(function(){
  // Do something here
  ...
})(someWord) //Why is this here?;

我的问题是:

  1. 将函数放在括号内是什么意思。即(function(){});?
  2. 函数末尾的括号集有什么作用?

我通常在 jquery 代码和其他一些 javascript 库中看到这些。

【问题讨论】:

标签: javascript coding-style scope anonymous-function javascript-namespaces


【解决方案1】:

您会立即使用特定参数调用匿名函数。

一个例子:

(function(name){
  alert(name);
})('peter')

这会提醒“peter”。

对于 jQuery,您可以将 jQuery 作为参数传递并在函数中使用 $。所以你仍然可以在 noConflict-mode 下使用 jQuery,但使用方便的 $:

jQuery.noConflict()
(function($){
  var obj = $('<div/>', { id: 'someId' });
})(jQuery)

【讨论】:

  • 感谢您的回复,现在有意义了
  • 这个函数可以命名吗?还是必须匿名?
【解决方案2】:

您正在创建一个立即被调用的函数,并以someWord 作为参数。

【讨论】:

  • 哇,这是最尖锐的答案,我明白了。谢谢
【解决方案3】:

这是一种定义匿名函数然后立即执行它的方法——实际上不留下任何痕迹。该函数的范围是真正的本地。末尾的() 括号执行该函数——封闭的括号是为了消除正在执行的内容的歧义。

【讨论】:

    【解决方案4】:

    基本上,这允许您声明一个匿名函数,然后将其括在括号中并编写(someWord),您正在运行该函数。您可以将其视为声明一个对象,然后立即实例化该对象。

    【讨论】:

      【解决方案5】:

      它用于创建匿名函数(可以“嵌套”在其他函数中的没有名称的函数)并将参数传递给该函数。 someWord 作为参数传递,函数可以使用关键字“arguments”读取它。

      简单的用法示例:

      function Foo(myval) {
          (function(){
            // Do something here
            alert(arguments[0]);
          })(myval); //pass myval as argument to anonymous function
      }
      ...
      Foo(10);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-07-13
        • 1970-01-01
        • 1970-01-01
        • 2012-03-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多