在不使用函数的情况下使用JavaScript中的return语句

时间:2013-12-10 11:01:02

标签: javascript logic

是否有任何可能的方法可以在执行return语句后保留JavaScript函数中的控件?

以下的释义示例将解释我的要求:

被叫函数:

function tree(node) {
    if (node == 'root') {
        return true;
        // this return needs to be executed on IF condition 
        // being true and then continue executing the remaining 
        // statements of function as a requirement.
    }

    do_something;
    // this does some 
    // visualization changes and has to be 
    // after the IF statement. 
}

以上示例不是确切的实现,但这是我需要实现的逻辑。

调用语句是这样的:

var fact = tree(n);
if (fact == 'true') {
    count++;
}

我正在寻找任何能够在功能中保持控制的解决方案,即使在返回之后由于各种原因而无法在此解释。任何替代逻辑也是受欢迎的:)

3 个答案:

答案 0 :(得分:0)

不,那么if语句之外的剩余语句将不会被执行。 总是在函数末尾返回,如

function tree(node) {
  var stat; //create a local variable within tree method
  if(node=='root') {
    stat = true; //assign true to stat inside if
   }
   do_something;  //this function gets executed
   return stat; //now return it while exiting the method
 }

答案 1 :(得分:0)

定义结果变量并在函数的最后执行返回:

function tree(node){
  var result; // kind of a cached result

  if(node=='root') {
    result = true; // set the result
  }

  do_something;

  return result; // return the result
}

使用return语句时,无论如何都要离开函数上下文。因此,保留在函数内部的唯一方法是将return语句延迟到函数的末尾(或者至少在其他代码运行之后)。

答案 2 :(得分:0)

如果希望异步执行最后一部分,可以尝试使用setTimeout方法。

function tree(n){
    //do stuff before return

    //execute something parallel to returning
    async(function(){do_something;}));

    return...
}
function async (fn) {
    setTimeout(fn, 20);
}