(函数(x,y){…})(a,b)是什么? 在JavaScript中的意思是?

我看到了这个function:

(function (x, y, data, lbl, dot) { // Function body... })(x, y, data[i], labels[i], dot); 

这是什么? 一个函数? 为什么在()放置一个函数定义?

在JavaScript中,你可以有anonymousself invokingfunction。

 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为参数。

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

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

function() {}是一个匿名函数的定义, (function() {})()是该匿名函数的调用。

这是可行的,因为函数可以像数据一样传递。 所以window.alert是已知的alert函数本身, window.alert()将会调用这个函数。

这种技术通常用于保持当前variables作用域的干净,因为函​​数有自己的variables作用域。

这是一个自我匿名调用函数。 该function是立即定义和执行的。 包装函数的圆括号确保它被视为函数expression式而不是函数声明 。 最后一对括号调用函数并传递参数。

一个自我执行的匿名函数将是一个相当准确的描述。

括号内的函数是一个匿名函数。 我不能说为什么这样做是完成的方式,但程序员定义和匿名函数,并立即调用它。 你也许可以做同样的事情,只需用它传入的值replace它的参数,然后删除函数定义即可。

这是一个自我调用function,它马上执行。 自调用函数对于避免创build全局variables是有效的,jQuery非常有效地使用它。

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

是相同的

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

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