【发布时间】:2019-02-18 03:53:29
【问题描述】:
我是 Javascript 的初学者,正在阅读“面向 Web 开发人员的 JS”一书的闭包和变量部分。举了两个例子:
function Func1() {
var result = new Array();
for (var i=0; i < 10; i++){
result[i] = function() {
console.log('i:'+i);
return i;
};
}
return result;
}
console.log(Func1());
function Func2() {
var result = new Array();
for(var i=0; i < 10; i++){
result[i] = function(num) {
return function() {
console.log('num:'+num);
return num;
};
}(i);
}
return result;
}
console.log(Func2());
在书的描述中,在func1中,每个函数都可以返回10,而在func2中,每个函数都会返回不同的数字。但是当我运行代码时,它实际上返回:
[ [Function],
[Function],
[Function],
[Function],
[Function],
[Function],
[Function],
[Function],
[Function],
[Function] ]
对于这两个功能。
那么如何打印出每个函数的实际值呢?以及为什么“console.log('i:'+i);”没有在第一个函数中打印?
【问题讨论】:
-
要打印函数的返回值,你必须先调用它。例如。
var arr = Func1(); arr[3](); -
@L.L 您需要包装该函数以便调用。当前,您正在为变量分配一个函数。您想要调用该函数并将结果返回到变量中。检查下面的示例。
-
var fncs = Func1(); console.log(fncs[0]()); console.log(fncs[1]())
标签: javascript function return-value