如何在javascript中退出调用函数



是否有一种方法可以退出调用当前正在执行的函数的函数?

一个例子是:

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);
}

最新更新