突破JavaScript';对于';循环使用False?
我不知道这是可能的(是吗?) 下面的代码显然记录了值1到5,然后中断了“for”循环,因为返回了“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
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”不应该最后返回还是同样返回
返回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