我的目标是检查条件并退出当前功能。但是,我更喜欢在我要退出的函数调用的另一个函数中执行此操作。这个简单的例子不会调用单独的函数,只是检查正文中的条件:
$scope.doStuff = function(){
if (something) {
return;
}
doSomething();
}
以下部分可以......
if (something) {
return;
}
...放在一个可以在doStuff()中使用的函数,就像这样?
$scope.doStuff = function(){
$scope.exitOnCondition();
doSomething();
}
$scope.exitOnCondition){
if (something) {
return;
}
}
显然,在我编写它的方式中,"返回"将返回exitOnCondition函数,而不是doStuff。像往常一样,我不需要检查代码,只是一个例子,这里的一切只是为了说明问题。
答案 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();
};