Javascript for循环中的闭包
我不明白为什么这不起作用:Javascript for循环中的闭包,javascript,for-loop,closures,Javascript,For Loop,Closures,我不明白为什么这不起作用: function returnVerse(x){ return function(x) {console.log(x);}; } for(var x = 9; x>=0; x--){ return returnVerse(x)(); } 结果是我没有定义 我从中得到了启发: 我知道这是一个范围问题,所以我试图创建一个闭包,我没有得到什么 提前谢谢 您要返回的最后一个函数是您要调用的最后一个函数,它是用()调用的,这意味着没有参数,但是您已经在内
function returnVerse(x){
return function(x) {console.log(x);};
}
for(var x = 9; x>=0; x--){
return returnVerse(x)();
}
结果是我没有定义
我从中得到了启发:
我知道这是一个范围问题,所以我试图创建一个闭包,我没有得到什么
提前谢谢 您要返回的最后一个函数是您要调用的最后一个函数,它是用
()
调用的,这意味着没有参数,但是您已经在内部函数中指定了一个参数,并且它是未定义的
function returnVerse(x){
// ^ outer argument
return function(x) {
// ^ inner argument overwrites outer argument
console.log(x); // undefined
};
}
for(var x = 9; x>=0; x--){
return returnVerse(x)();
// ↑ ^ innner argument not passed, "undefined"
outer argument
}
只是不要在内部函数中指定参数,外部函数的参数将在作用域中,并封闭(闭包)
另外,从for
循环返回没有什么意义,这意味着它只运行一次您返回的最后一个函数是您调用的最后一个函数,它只使用()
调用,这意味着没有参数,但是您在内部函数中指定了一个参数,并且它是未定义的
function returnVerse(x){
// ^ outer argument
return function(x) {
// ^ inner argument overwrites outer argument
console.log(x); // undefined
};
}
for(var x = 9; x>=0; x--){
return returnVerse(x)();
// ↑ ^ innner argument not passed, "undefined"
outer argument
}
只是不要在内部函数中指定参数,外部函数的参数将在作用域中,并封闭(闭包)
另外,从for
循环返回没有什么意义,这意味着它在您显示的上下文中只运行一次,您不能在for循环returnVerse(x)(x)中返回代码>您的第二个函数需要,但未发送参数。在您显示的上下文中,您不能在for循环内返回returnVerse(x)(x)代码>第二个函数需要,但未发送参数。