function a(){
if(true)
return false;
}
这是没有任何问题的,如果我改成这种
function Test(){
a();
b();
c();
}
js 函数a() return false 跳出外部函数Test(),怎么写?
function a(){
if(true)
return false;
}
这是没有任何问题的,如果我改成这种
function Test(){
a();
b();
c();
}
js 函数a() return false 跳出外部函数Test(),怎么写?
把所有方法放入数组,通过数组的every方法来判断是否有错误,中断跳出
function a(){
console.log('a');
if (true) {
return false;
}
}
function b() {
console.log('b');
}
function c() {
console.log('c');
}
const arr = [a, b, c];
function Test() {
const noErr = arr.every(fn => fn());
if (!noErr) {
return false;
}
}
Test()
8 回答4.6k 阅读✓ 已解决
6 回答3.3k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
5 回答6.3k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
4 回答2.7k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
return
只能退出当前函数,不具备跨函数的功能。但是throw
具有不限层次中断的功能,所以这个需要可能需要使用 throw 来完成。一般情况下
throw
应该抛出一个Error
对象。但是 JavaScript 并未对throw
的对象有所有限制,所以也可以抛出其它东西,在确实不需要抛出错误的情况下,抛出一个状态对象,甚至值都是可以的。但不管抛出什么,要想外面的程序能正常运行,都是需要try ... catch
的。举例:
只会输出
[Trace] a()
,因为被 throw 给中断掉了。如果是有一堆判断函数,只要有一个 flase 就退出,那就可以用数组来处理,比如
只要遇到一个返回
false
的就结束了(注意,返回undefined
,也就是无返回值 …… 也表示false
)