Wrox Profesionnal Javascript p188 我不理解第8行的这一部分,其中匿名函数已经有一个num的参数,但是如何将(i)复制到参数num中。通常情况下,一个函数会在结束括号中停止},添加(i)对我来说没有意义。
function createFunctions(){
var result = new Array();
for (var i=0; i < 10; i++){
result[i] = function(num){
return function(){
return num;
};
}(i);
}
return result;
}
答案 0 :(得分:1)
这是一个闭包和一个自我执行的功能。 i
被“保存”在返回函数的范围内。
var test = "ONE";
var scoped = function () {
alert(test);
}
var saved_scoped = (function (value) {
return function () {
alert(value);
}
})(test);
test = "NOT ONE!";
scoped(); // alerts NOT ONE!
saved_scoped(); // alerts ONE
所以你立即用(i)
执行该功能。然后返回保存i
值的函数。
答案 1 :(得分:1)
这是调用函数并将参数i传递给它的简写。就像这样做:
function createFunctions(){
var result = new Array();
for (var i=0; i < 10; i++){
result[i] = myFunction(i);
}
return result;
}
function myFunction(num){
return function(){
return num;
}
}
将myFunction视为匿名函数我帮助您了解正在发生的事情,因此我没有myFunction(i),而是函数(num){...}(i);