2013-03-08 194 views
0

是否有退出已调用当前正在执行的函数的函数的方法?如何在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时检查这个错误。但我想不是每次都检查它...

+0

'回报;'我亲爱的:) – kidwon 2013-03-08 15:25:04

+0

你总是可以只扔目的的JavaScript错误。 – 2013-03-08 15:25:41

+0

'return'会返回到调用函数,但?或者我误解了? – 2013-03-08 15:25:43

回答

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的返回值调用它们。

0

尝试这样?返回一个令牌/魔法值? (像“周刊”的字符串可能是一个坏的道理,但它使我发笑,使用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); 
}