(函数(x,y){…})(a,b)是什么? 在JavaScript中的意思是?
我看到了这个function:
(function (x, y, data, lbl, dot) { // Function body... })(x, y, data[i], labels[i], dot);
这是什么? 一个函数? 为什么在()
放置一个函数定义?
在JavaScript中,你可以有anonymous
和self invoking
function。
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。