JavaScript 闭包和 for 循环

JavaScript closures and a for loop

本文关键字:循环 for 闭包 JavaScript      更新时间:2023-09-26

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

var fn = function(){
    for (i = 0; i < 3; i++){
        return function(){
            console.log(i);
        };
    }
}();
fn();

因为您的 return 语句强制循环终止和函数停止执行。

您可以在此处了解有关return语句的更多信息 - https://en.wikipedia.org/wiki/Return_statement

您返回的闭包调用console.log .当你执行这个语句时return你正在阻止fn()继续,它会返回需要返回的第一件事并停止执行。如果要控制台.log,请删除 return 语句(和闭包)。

var fn = function(){
    for (i = 0; i < 3; i++){
        console.log(i);
    }
}();
fn();

另请参阅:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/return