Моя цель - проверить состояние и выйти из текущей функции. ОДНАКО, я бы предпочел сделать это в другой функции, вызванной функцией, которую я хочу выполнить. Простой пример, который НЕ вызывает отдельную функцию и просто проверяет условие в теле:
$scope.doStuff = function(){
if (something) {
return;
}
doSomething();
}
Может ли часть ниже...
if (something) {
return;
}
... быть помещены в функцию, которая может использоваться в doStuff(), например?
$scope.doStuff = function(){
$scope.exitOnCondition();
doSomething();
}
$scope.exitOnCondition){
if (something) {
return;
}
}
Очевидно, что так, как я его написал, "return" будет возвращаться из функции exitOnCondition, а не doStuff. Как обычно, мне не нужен проверенный код, просто общий пример, все здесь просто для иллюстрации вопроса.
Если exitOnCondition
возвращает boolean и вызывает его в выражении if
.
$scope.doStuff = function(){
if ($scope.exitOnCondition())
return;
doSomething();
}
$scope.exitOnCondition = function(){
if (something) {
return true;
}
}
Чтобы избежать 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;
}
}
Вы можете иметь exitOnCondition
вернуть значение, которое вы можете проверить в родительской функции.
$scope.exitOnCondition = function() {
if (something) {
return true;
}
// ...
return false; // Could omit this entirely
};
$scope.doStuff = function() {
if ($scope.exitOnCondition()) {
return;
}
doSomething();
};
throw
, но это нужно будет где-то поймать. Единственный другой способ избежатьreturn
в основную функцию - это реструктурировать ваш код так, чтобы остальные выполнялись, только если другая функция возвращает true.if ($scope.passedCondition()) { doSomething() }