是否有一种方法可以退出调用当前正在执行的函数的函数?
一个例子是:
function doOneTwoThree(){
doStuff(1, print);
doStuff(2, print);
doStuff(3, print);
}
function doStuff(parameter, aFunction){
if(parameter === 2) {
//exit from doOneTwoThree
}
aFunction(parameter);
}
function print(something){
console.log(something);
}
另一个选项是在doStuff
中返回一个错误,并在每次调用doStuff
时检查doOneTwoThree
中的错误。但是我不希望每次都要检查……
您可以使用throw
并捕获doOneTwoThree
中的错误抛出:
function doStuff(parameter, aFunction) {
if (parameter === 2) {
throw "error";
}
}
function doOneTwoThree() {
try {
doStuff(1, print);
doStuff(2, print);
}
catch (error) { /* handle here */ }
}
然而,如果你没有抛出一个实际的错误/异常,你不应该使用它来控制你的代码流。相反,您应该检查doStuff
调用的返回值,以确认您可以继续。如果这听起来不太干净,您还可以执行类似链式doStuff
调用的操作,或者在可以根据doStuff
返回值跳出的循环中调用它们。
试试这样做?返回一个令牌/魔法值?(像' week '这样的字符串可能是一个糟糕的标记,但它让我觉得有趣,使用int代替)
function doOneTwoThree(){
if (doStuff(1, print) === "eek") return;
doStuff(2, print);
doStuff(3, print);
}
function doStuff(parameter, aFunction){
if(parameter === 2) {
return "eek";
}
aFunction(parameter);
}