什么(function(x,y){...})(a,b);用JavaScript表示?

时间:2010-10-13 08:29:02

标签: javascript

我看到了这个功能:

(function (x, y, data, lbl, dot) {
    // Function body...
})(x, y, data[i], labels[i], dot);
这是什么?一个功能?为什么要在()中放置函数定义?

8 个答案:

答案 0 :(得分:35)

在javascript中,您可以拥有anonymousself invoking个功能。

function add(a, b)
{
   return a + b;
}

相同
var add = function (a, b) {
             return a + b;
          }

并将其称为

add(10, 20)

您可以定义该功能并立即将其调用为

(
   function(a, b)
   {
      return a + b;
   }
)(10, 20);

   (
       function(a, b)
       {
          return a + b;
       }
    )

部分定义了一个函数,(10, 20)在调用刚定义的函数后立即定义,其中10和20作为参数。

由于该函数没有名称,因此以后不能在代码中使用。

您问题中的代码可能缩小,并以类似的方式创建一个函数并立即调用它。

答案 1 :(得分:7)

function() {}definition of an anonymous function(function() {})()是该匿名函数的调用。

这是有效的,因为函数可以像数据一样传递。因此,window.alert是已知的alert函数本身,window.alert()将调用该函数。

此技术通常用于保持当前变量范围的清晰,因为函数具有自己的变量范围。

答案 2 :(得分:5)

这是一个自我匿名调用函数。该功能立即定义并执行。包装函数的括号确保将其视为function expression而不是function declaration。最后一对括号调用函数并传递参数。

答案 3 :(得分:2)

一个自动执行的匿名函数将是一个非常准确的描述。

答案 4 :(得分:1)

这是一个自我调用函数,它立即执行。 自调用函数对于避免创建全局变量是有效的,jQuery非常有效地使用它。

答案 5 :(得分:0)

括号内的函数是一个匿名函数。我不能说为什么这样做是按照它完成的方式完成的,但程序员定义了匿名函数,并立即调用它。你可以通过简单地用传入的值替换它的参数并删除函数定义来做同样的事情。

答案 6 :(得分:0)

var funct = function(x,y) { }
funct(1,2)

相同
(function(x,y){ })(1,2);

它定义了一个自调用匿名函数。它被执行然后扔掉了。这是一种整理代码的方法(虽然这是一个不好的例子)并且只在该范围内使用私有变量。它也不会存储在闭包中。

答案 7 :(得分:-1)

我发现了

!(function (a, b) {

在Poly网站上建立数学网站,使其时不时地停止点击