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

Mol*_*ama 1 javascript for-loop break boolean-expression

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

下面的代码显然记录了值1到5,然后突破了'for'循环,因为返回了'false'值.

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

console.log(x());
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  • 为什么返回'false'时for循环会短路?我看了MDN但是没有任何关于使用'false'来打破for循环的东西.也尝试过看ECMA的规格,但遗憾的是太棒了.

  • 为什么函数不会向控制台返回'true',因为'for'循环执行后存在'return true'语句?即使错误以某种方式返回'第一',也不应该'真'返回最后还是?

Man*_*wal 6

return false 没有打破你的循环,但回到外面的控制.

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

console.log(x())
Run Code Online (Sandbox Code Playgroud)

输出:

0
1
2
3
4
5
false //here returning false and control also 
Run Code Online (Sandbox Code Playgroud)

哪里break会打破你的循环,而不是从功能出来.

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

console.log(x())
Run Code Online (Sandbox Code Playgroud)

将输出:

0
1
2
3
4
5 //after this loop is breaking and ouputing true
true 
Run Code Online (Sandbox Code Playgroud)