0

如果我是从另一个函数内部调用的函数,我如何退出主/父函数?

例如:

function(firstFunction(){
    //stuff
    secondFunction()
    // stuff if second function doesnt exit
}

function secondFunction(){
    if( // some stuff here to do checks...){
        /***** Exit from this and firstFunction, i.e stop code after this function call from running ****/
    }
}
4

4 回答 4

2

其他答案显然是正确的,但我会略有不同并这样做......

function firstFunction() {
    if (secondFunction()) {
        // do stuff here
    }
}

function secondFunction() {
    if (something) {
        return false;  // exit from here and do not continue execution of firstFunction
    }
    return true;
}

这只是编码风格的不同意见,对最终结果没有影响。

于 2013-10-16T11:28:49.847 回答
1

你可以返回一些值来表明你想从firstFunction().

例如

function(firstFunction(){
    //stuff
    rt = secondFunction()
    if (rt == false) {
        return; // exit out of function
    }
    // stuff if second function doesnt exit
}

function secondFunction(){
    if( // some stuff here to do checks...){
        /***** Exit from this and firstFunction, i.e stop code after this function call from running ****/
        return false;
    }
    return true;
}
于 2013-10-16T11:11:17.063 回答
1

您不能直接将控制流返回堆栈的 2 步。但是,您可以从内部函数返回一个值,然后在外部处理该值。像这样的东西:

function(firstFunction(){
    var result = secondFunction()
    if (!result) 
        return
}

function secondFunction(){
    if( /* some stuff here to do checks */ ){
        return false;
    }
    return true;
}
于 2013-10-16T11:11:52.127 回答
1

你应该做一个这样的回调:

function firstFunction () {
  secondFunction(function () {
    // do stuff here if secondFunction is successfull
  });
};

function secondFunction (cb) {
  if (something) cb();
};

这样,您也可以在 secondFunction 中执行异步操作,例如 ajax 等。

于 2013-10-16T11:33:22.403 回答