嵌套"返回"退出父功能?

时间:2015-09-30 15:03:06

标签: javascript angularjs

我的目标是检查条件并退出当前功能。但是,我更喜欢在我要退出的函数调用的另一个函数中执行此操作。这个简单的例子不会调用单独的函数,只是检查正文中的条件:

$scope.doStuff = function(){
  if (something) {  
    return;
  }
  doSomething();
}

以下部分可以......

  if (something) {  
    return;
  }

...放在一个可以在doStuff()中使用的函数,就像这样?

$scope.doStuff = function(){
  $scope.exitOnCondition();
  doSomething();
}

$scope.exitOnCondition){
      if (something) {  
        return;
      }
}

显然,在我编写它的方式中,"返回"将返回exitOnCondition函数,而不是doStuff。像往常一样,我不需要检查代码,只是一个例子,这里的一切只是为了说明问题。

2 个答案:

答案 0 :(得分:5)

exitOnCondition返回一个布尔值,并在if语句中调用它。

$scope.doStuff = function(){
  if ($scope.exitOnCondition())
    return;
  doSomething();
}

$scope.exitOnCondition = function(){
      if (something) {  
        return true;
      }
}

要避免使用main函数中的return,您可以稍微重新构建它,但if将需要保留。

$scope.doStuff = function(){
  if (!$scope.exitOnCondition())
    doSomething();
}

$scope.exitOnCondition = function(){
      if (something) {  
        return true;
      }
}

注意!否定结果。如果颠倒exitOnCondition()函数的含义,这可能会更清晰。

$scope.doStuff = function(){
  if ($scope.passedCondition())
    doSomething();
}

$scope.passedCondition = function(){
      if (something) {  
        return false;
      }
}

答案 1 :(得分:1)

您可以让exitOnCondition返回一个可以在父函数中检查的值。

$scope.exitOnCondition = function() {
  if (something) {
    return true;
  }
  // ...
  return false; // Could omit this entirely
};

$scope.doStuff = function() {
  if ($scope.exitOnCondition()) {
    return;
  }
  doSomething();
};