如果我有下面的for循环
for (var i = 0; i < SomeArrayOfObject.length; i++) {
if (SomeArray[i].SomeValue === SomeCondition) {
var SomeVar = SomeArray[i].SomeProperty;
return SomeVar;
}
}
return语句是否会停止函数的执行?
如果我有下面的for循环
for (var i = 0; i < SomeArrayOfObject.length; i++) {
if (SomeArray[i].SomeValue === SomeCondition) {
var SomeVar = SomeArray[i].SomeProperty;
return SomeVar;
}
}
return语句是否会停止函数的执行?
当前回答
是的,函数总是在其控制流遇到return语句时结束。
下面的示例演示return语句如何结束函数的执行。
函数returnMe() { For (var I = 0;I < 2;我+ +){ If (i === 1)返回i; } } console.log (returnMe ());
注意:请参阅关于try-catch-finally的特殊情况的另一个答案,以及关于forEach回调如何有自己的函数作用域,因此它不会跳出包含函数的答案。
其他回答
"return"确实退出了函数,但如果你想返回大量的数据,你可以将它存储在一个数组中,然后返回它,而不是试图在循环中逐个返回每个数据块。
是的,函数总是在其控制流遇到return语句时结束。
下面的示例演示return语句如何结束函数的执行。
函数returnMe() { For (var I = 0;I < 2;我+ +){ If (i === 1)返回i; } } console.log (returnMe ());
注意:请参阅关于try-catch-finally的特殊情况的另一个答案,以及关于forEach回调如何有自己的函数作用域,因此它不会跳出包含函数的答案。
这段代码将在for of循环的第一次迭代后退出循环:
const objc = [{ name: 1 }, { name: 2 }, { name: 3 }];
for (const iterator of objc) {
if (iterator.name == 2) {
return;
}
console.log(iterator.name);// 1
}
下面的代码将跳转到条件上并继续for of循环:
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语句仅当它在函数内部时才会停止循环(即它同时终止循环和函数)。否则,你会得到这样的错误:
Uncaught SyntaxError: Illegal return statement(…)
要终止循环,应该使用break。
是的,一旦return语句被执行,整个函数就会在那一刻退出。
想象一下,如果它不这样做,继续循环,每次执行return语句会发生什么?它会使返回值的意义失效。