Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript闭包和for循环_Javascript - Fatal编程技术网

JavaScript闭包和for循环

JavaScript闭包和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

我想知道为什么下面代码的结果是0而不是3

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();

另请参见:

因为您是从循环中返回的,所以您打破了循环。谢谢,我完全忽略了它,因为我过于专注于了解什么是结束。