JavaScript闭包和for循环
我想知道为什么下面代码的结果是0而不是3JavaScript闭包和for循环,javascript,Javascript,我想知道为什么下面代码的结果是0而不是3 var fn = function(){ for (i = 0; i < 3; i++){ return function(){ console.log(i); }; } }(); fn(); var fn=function(){ 对于(i=0;i
var fn = function(){
for (i = 0; i < 3; i++){
return function(){
console.log(i);
};
}
}();
fn();
var fn=function(){
对于(i=0;i<3;i++){
返回函数(){
控制台日志(i);
};
}
}();
fn();
因为您的return
语句强制循环终止,函数停止执行
您可以在此处了解有关
return
语句的更多信息-您正在返回调用console.log的闭包。当您执行此return
语句时,您将停止fn()
继续,它将返回第一个需要返回的内容并停止执行。如果要使用console.log,请删除return语句(和闭包)
var fn = function(){
for (i = 0; i < 3; i++){
console.log(i);
}
}();
fn();
var fn=function(){
对于(i=0;i<3;i++){
控制台日志(i);
}
}();
fn();
另请参见:因为您是从循环中返回的,所以您打破了循环。谢谢,我完全忽略了它,因为我过于专注于了解什么是结束。