我看到了这个功能:
(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 非常有效地使用了这一点。