Javascript 返回是否停止循环?
假设我有一个这样的循环:Javascript 返回是否停止循环?,javascript,loops,return,Javascript,Loops,Return,假设我有一个这样的循环: for (var i = 0; i < SomeArrayOfObject.length; i++) { if (SomeArray[i].SomeValue === SomeCondition) { var SomeVar = SomeArray[i].SomeProperty; return SomeVar; } } for(变量i=0;i
for (var i = 0; i < SomeArrayOfObject.length; i++) {
if (SomeArray[i].SomeValue === SomeCondition) {
var SomeVar = SomeArray[i].SomeProperty;
return SomeVar;
}
}
for(变量i=0;i
快速提问:
return
是否停止循环本身的执行?是,return
停止执行并退出函数return
always**立即退出其函数,如果它在for循环中,则不再执行
这很容易为您自己验证:
函数returnMe(){
对于(变量i=0;i<2;i++){
如果(i==1)返回i;
}
}
console.log(returnMe())代码>是,一旦执行了return
语句,整个函数就在此时退出
试想一下,如果它不这样做,继续循环,每次执行return
语句,会发生什么?当您考虑返回值时,它将使其含义无效。在大多数情况下(包括本例),返回将立即退出。但是,如果返回值位于try
块中,并伴有finally
块,则finally
始终执行,并且可以“覆盖”try
中的返回值
function foo() {
try {
for (var i = 0; i < 10; i++) {
if (i % 3 == 0) {
return i; // This executes once
}
}
} finally {
return 42; // But this still executes
}
}
console.log(foo()); // Prints 42
函数foo(){
试一试{
对于(变量i=0;i<10;i++){
如果(i%3==0){
return i;//执行一次
}
}
}最后{
return 42;//但仍然执行
}
}
console.log(foo());//印刷品42
“return”确实会退出函数,但如果您想返回大量数据,可以将其存储在数组中,然后返回,而不是尝试在循环中逐个返回每个数据。return
语句仅在循环位于函数内部时停止循环(即,它同时终止循环和函数)。否则,将出现以下错误:
Uncaught SyntaxError: Illegal return statement(…)
要终止循环,您应该使用break
答案是肯定的,如果您编写return语句,控件将立即返回调用方方法。
除了finally块,它在return语句之后执行
如果在finally块内返回,finally还可以重写已返回的值。
链接:
返回语句定义符合:
Java文档:
return语句可用于从控制流块中分支出来
然后退出该方法
MSDN文档:
return语句终止函数的执行和
将控件返回给调用函数。执行将在下一步继续
在紧接着调用的点调用函数
维基百科:
return语句使执行离开当前子例程
并在代码中
子例程被调用,称为其返回地址。回信地址
通常保存在进程的调用堆栈上,作为
进行子程序调用的操作。返回语句的格式很多
语言允许函数指定要传回的返回值
指向调用该函数的代码
此代码将在of
循环的中的第一次迭代后退出循环:
const objc = [{ name: 1 }, { name: 2 }, { name: 3 }];
for (const iterator of objc) {
if (iterator.name == 2) {
return;
}
console.log(iterator.name);// 1
}
const objc = [{ name: 1 }, { name: 2 }, { name: 3 }];
for (const iterator of objc) {
if (iterator.name == 2) {
continue;
}
console.log(iterator.name); // 1 , 3
}
以下代码将在条件下跳转,并在of循环中继续执行:
const objc = [{ name: 1 }, { name: 2 }, { name: 3 }];
for (const iterator of objc) {
if (iterator.name == 2) {
return;
}
console.log(iterator.name);// 1
}
const objc = [{ name: 1 }, { name: 2 }, { name: 3 }];
for (const iterator of objc) {
if (iterator.name == 2) {
continue;
}
console.log(iterator.name); // 1 , 3
}
>return总是立即退出它的函数,如果它在一个@o-o类true的循环中,则不会进一步执行return
仍然从函数回调的当前迭代返回,在它自己的范围内,但不希望从整个调用方法forEach()
中断。因此,它不是从循环本身返回,而是从循环执行的回调返回。在链接问题的代码示例中,由于返回,输出是跳过1,2,4,5
的3
。可能红线是return
将始终从当前此
上下文返回。在数组中使用forEach()或for()的替代方法是“潜在”早期循环终止使用的是some()。我知道这对某些人来说是微不足道的,但这非常好,因为你不再需要中断
,然后返回
。你需要正确链接你使用的源代码,并理想地格式化引号。现在看起来很好吗?我很欣赏语法修复,但是仍然没有任何链接,您仍然没有使用blockquote格式。谢谢,这对我帮助很大,我正在使用node,返回值正在破坏我的,for each和for…of,continue的工作原理与我预期的迷宫解决方案类似,是的,在这种情况下,返回值将始终执行使用try catch