0

有没有办法退出调用当前正在执行的函数的函数?

一个例子是:

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并检查该错误。但我不想每次都检查它......doOneTwoThreedoStuff

4

2 回答 2

2

您可以使用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返回值将其中断。

于 2013-03-08T15:28:29.207 回答
0

试试这样的东西?返回一个令牌/魔法值?(像 'eek' 这样的字符串可能是一个不好的标记,但它让我很开心,请改用 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);
}
于 2013-03-08T15:29:45.070 回答