我看到了这个功能:
(function (x, y, data, lbl, dot) {
// Function body...
})(x, y, data[i], labels[i], dot);
这是什么?一个函数?为什么要在 中放置函数定义()
?
我看到了这个功能:
(function (x, y, data, lbl, dot) {
// Function body...
})(x, y, data[i], labels[i], dot);
这是什么?一个函数?为什么要在 中放置函数定义()
?
在javascript中,您可以拥有anonymous
和self 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;
}
)
part 定义了一个函数,(10, 20)
紧接着它调用刚刚定义的函数,用 10 和 20 作为它的参数。
由于该函数没有名称,所以后面的代码中不能使用它。
您问题中的代码可能是minified,并以类似的方式创建一个函数并立即调用它。
function() {}
是一个匿名函数的定义并(function() {})()
是匿名函数的调用。
这是有效的,因为函数可以像数据一样传递。所以window.alert
是已知alert
函数本身window.alert()
会调用该函数。
这种技术通常用于保持当前变量范围干净,因为函数有自己的变量范围。
自执行匿名函数将是一个非常准确的描述。
它是一个自调用函数,它会立即执行。自调用函数对于避免创建全局变量非常有效,jQuery 非常有效地使用了这一点。