在 javascript 中,“()”是函数调用运算符。所以每次你调用“()”时,它都会尝试在这个操作符之前调用函数。在您的情况下,分配了一个函数来添加。让我为每个函数指定一个名称,这样就很容易理解了。
var i = 0;
var add = function one() {
++i;
return function two() {
i++;
return function three() {
i++;
add();
}
}
};
// This will execute function one
// and return function two.
add();
// This will execute function one and two,
// return function three
add()();
// This will execute function one, two, three,
// return function two. Why?
// Because in function three, we call add() which will execute
// function one and return function two as I mentioned above.
add()()();
现在让我们看看你是否真的了解函数调用。
var i = 0;
var add = function one() {
i++;
return function two() {
i++;
return function three() {
i++;
}
}()
};
为了避免无限循环,我删除了函数三中的函数add(),并在函数二之后添加了“()”。那么如果我们现在调用 add() 呢?
// This will execute function one and return function two,
// function two will invoke itself because of "()" at the end
// I added and return function three. So call add() will
// execute function one and function two, return function three.
// So i = 2 in this case.
add();
你可以整天玩这些函数调用,直到你对它有信心。