Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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 返回是否停止循环?_Javascript_Loops_Return - Fatal编程技术网

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