使用 False 打破 JavaScript 'For' 循环?

Breaking out of JavaScript 'For' Loop using False?

我不知道这是可能的(是吗?)

下面的代码显然记录值 1 到 5,然后跳出 'for' 循环,因为 'false' 值是 returned。

function x() {
    for (var i = 0; i < 10; i++) {
        console.log(i);
        if (i == 5) return false;
    }
    return true
}

console.log(x());

我的问题是:

return 语句结束了函数,所以 return true 行是不可到达的。希望有所帮助。

return false 并没有打破你的循环,而是将控制权从外部返回。

function x() {
    for (var i = 0; i < 10; i++) {
        console.log(i);
        if (i == 5) return false;
    }
    return true
}

console.log(x())

输出:

0
1
2
3
4
5
false //here returning false and control also 

其中 break 会中断循环而不是退出函数。

function x() {
    for (var i = 0; i < 10; i++) {
        console.log(i);
        if (i == 5) break;
    }
    return true
}

console.log(x())

将输出:

0
1
2
3
4
5 //after this loop is breaking and ouputing true
true 

The below code apparently logs values 1 to 5, then breaks out of the 'for' loop, because the 'false' value is returned.

错误,它跳出 for 循环是因为 return,而不是因为 false。您可以写 return x 具有相同的效果。重点是,return 立即退出封闭的 function,无论当前正在执行什么循环或条件。

循环永远不会执行到 10。一旦 i 等于 5,return false 将 return 控制函数 x 的调用者。return true 行无法访问.
这是您的代码

function x() {
    for (var i = 0; i < 10; i++) {
        console.log(i);
        if (i == 5) return false;
    }
    return true
}

console.log(x());

输出:-

 0
 1
 2
 3
 4
 5
 false

如果您希望它达到 return true 语句,您可能需要做一些事情,例如在 for 循环中添加 break 而不是 return false

for (var i = 0; i < 10; i++) {
            console.log(i);
            if (i == 5) break;//this will put it outside for loop
        }

如果您不想弄乱 return 或 break 语句,您可以只添加一个布尔标志。在我的示例中,我使用 isFound 标志来 运行 循环,直到满足您的要求或数组结束。

const arr = [1,2,3,4,5];

for(let i = 0, isFound; !isFound; i++){
  if(i >= 3 || i >= arr.length){isFound = true;}
  else { console.log(arr[i]);}
}

所以输出将是:

1
2 
3