如果我在从另一个函数内部调用的函数中,如何退出main / parent函数?
E:
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 ****/
}
}
答案 0 :(得分: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;
}
这只是编码风格的不同意见,并且与最终结果没有区别。
答案 1 :(得分:1)
您可以返回一些值,表示您要退出firstFunction()
。
e.g。
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;
}
答案 2 :(得分:1)
您无法直接将控制流返回堆栈两步。但是,您可以从内部函数返回一个值,然后在外部处理。像这样:
function(firstFunction(){
var result = secondFunction()
if (!result)
return
}
function secondFunction(){
if( /* some stuff here to do checks */ ){
return false;
}
return true;
}
答案 3 :(得分:1)
你应该做这样的回调:
function firstFunction () {
secondFunction(function () {
// do stuff here if secondFunction is successfull
});
};
function secondFunction (cb) {
if (something) cb();
};
这样你就可以像在ajax等中那样在secondFunction中做异步的东西。