js 递归函数中的for循环里return跳出循环却没有跳出函数react
时间: 2024-03-16 20:43:55 浏览: 222
在 JavaScript 中,使用 `return` 关键字可以跳出当前函数,但并不能跳出循环。因此,如果在递归函数中使用 `return` 跳出循环,只是跳出当前层的循环,但并没有跳出整个函数的递归调用。如果要跳出整个递归调用,可以使用 `break` 关键字。
下面是一个示例代码,演示了使用 `return` 跳出循环和使用 `break` 跳出递归调用的不同效果:
```javascript
function recursiveFunction(num) {
for (let i = 0; i < num; i++) {
if (i === 5) {
return; // 跳出当前层的循环,但不跳出递归调用
}
console.log(i);
}
console.log("Finished loop");
recursiveFunction(num - 1);
}
recursiveFunction(3); // 输出:0 1 2 0 1 2 0 1 2 Finished loop Finished loop Finished loop
function recursiveFunctionWithBreak(num) {
for (let i = 0; i < num; i++) {
if (i === 5) {
break; // 跳出整个递归调用
}
console.log(i);
}
console.log("Finished loop");
if (num > 1) {
recursiveFunctionWithBreak(num - 1);
}
}
recursiveFunctionWithBreak(3); // 输出:0 1 2 Finished loop 0 1 2 Finished loop 0 1 2 Finished loop
```
在第一个例子中,使用 `return` 跳出了当前层的循环,但没有跳出递归调用,因此在最后输出了三个 "Finished loop"。
在第二个例子中,使用 `break` 跳出了整个递归调用,因此只输出了一次 "Finished loop"。
阅读全文