如何在javascript中退出调用函数

时间:2013-03-08 15:22:43

标签: 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中返回错误,并在每次调用doOneTwoThree时检查doStuff中的错误。但我不想每次都检查它......

2 个答案:

答案 0 :(得分: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返回值在循环中调用它们。

答案 1 :(得分: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);
}