Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.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';对于';循环使用False?_Javascript_For Loop_Break_Boolean Expression - Fatal编程技术网

突破JavaScript';对于';循环使用False?

突破JavaScript';对于';循环使用False?,javascript,for-loop,break,boolean-expression,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()); 函数x(){ 对于(变量i=0;i

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

下面的代码显然记录了值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());
函数x(){
对于(变量i=0;i<10;i++){
控制台日志(i);
如果(i==5)返回false;
}
返回真值
}
console.log(x());
我的问题是:

  • 当返回“false”时,为什么会出现for回路短路?我查看了MDN,但并没有关于使用“false”来打破for循环的内容。我也试过看ECMA的规格,但遗憾的是,它太小了

  • 为什么函数不向控制台返回'true',因为'return true'语句在执行'for'循环后存在?即使false以某种方式返回“first”,那么“true”不应该最后返回还是同样返回


return语句结束函数,因此无法访问return true行。希望有帮助

返回false
不是中断循环,而是将控制权返回到后面

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

console.log(x())
其中
break
将中断循环,而不是从函数中出来

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

console.log(x())
下面的代码显然记录了值1到5,然后从 “for”循环,因为返回了“false”值


错误,由于返回的
而中断
for
循环,而不是因为
false
。您可以编写
返回x
,效果相同。关键是,
return
立即从封闭的
函数中退出,无论当前执行的是什么循环或条件。

循环在10点之前永远不会执行
returnfalse
将在i等于5时将控制权返回给函数x的调用者。
返回true
行无法访问。
这是你的密码

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

console.log(x());
如果希望返回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
        }
for(变量i=0;i<10;i++){
控制台日志(i);
if(i==5)break;//这将把它放在for循环的外部
}

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

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 

return
语句将强制从调用当前函数的当前函数返回控件。。。因此,在这种情况下,它将从循环中出来,并返回
false
给被叫方。如果我能给每个回答的人声誉、分数或任何东西,我会这样做。这为我澄清了一切,谢谢你们!
for (var i = 0; i < 10; i++) {
            console.log(i);
            if (i == 5) break;//this will put it outside for loop
        }
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