function constfuncs() {
var funcs = [];
var helper=function(e){
alert(e);
}
for(var i = 0; i < 10; i+=1) {
funcs[i] = helper(i)
}
return funcs;
}
constfuncs()[0];
这段代码为什么会alert 10次?
function constfuncs() {
var funcs = [];
var helper=function(e){
alert(e);
}
for(var i = 0; i < 10; i+=1) {
funcs[i] = helper(i)
}
return funcs;
}
constfuncs()[0];
这段代码为什么会alert 10次?
funcs[i] = helper(i) 这个赋值语句中,helper(i)函数执行后的结果在赋值给funcs数组。如果你想通过变量的方式将函数存起来以便进行调用,可以通过下面的方式
function constfuncs() {
var funcs = [];
var helper=function(e){
alert(e)
}
for(var i = 0; i < 10; i+=1) {
funcs[i] = (function(i){ return helper.bind(this,i)})(i);
}
return funcs;
}
constfuncs()[0](); //输出0
constfuncs()[1](); //输出1
13 回答13k 阅读
7 回答2.2k 阅读
3 回答1.3k 阅读✓ 已解决
6 回答1.3k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
6 回答1.1k 阅读
当你调用
constfuncs
函数的时候已经执行了10次啊。。 请注意
helper(i)
是函数调用 -.-所以你的
funcs
返回的其实是是一个长度为10的数组,里面都是undefined
,即helper
函数的返回值