使用 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());
我的问题是:
当 'false' 被 returned 时,为什么 for 循环会短路?我查看了 MDN,但没有关于使用 'false' 来跳出 for 循环的内容。还尝试查看 ECMA 规范,但遗憾的是太菜鸟了。
为什么return'true'函数没有到控制台,因为'return true'语句在'for'循环执行后存在?即使以某种方式为假 returns 'first',不应该 'true' return last 或者 also?
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
我不知道这是可能的(是吗?)
下面的代码显然记录值 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());
我的问题是:
当 'false' 被 returned 时,为什么 for 循环会短路?我查看了 MDN,但没有关于使用 'false' 来跳出 for 循环的内容。还尝试查看 ECMA 规范,但遗憾的是太菜鸟了。
为什么return'true'函数没有到控制台,因为'return true'语句在'for'循环执行后存在?即使以某种方式为假 returns 'first',不应该 'true' return last 或者 also?
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