2016-08-25 3 views
-3

Как насчет вложенных, если?Как выйти из середины функции?

$scope.addToCart = function() { 
    if (flagA) { 
     if (flagB) { 
      if (flagC) { 
       alert('nononono!'); 
       return; 
      } 
     } 
    } 
    someAnotherFunction(); 
}; 

У меня есть функция:

$scope.addToCart = function() { 
    var foo = 5; 
    if (someFlag == 'Y') { 
     alert('warning!'); 
     return; 
    } 
    someAnotherFunction(); 
}; 

Я призываю эту функцию где

ng-click = "addToCart()" 

Мое намерение состоит, чтобы выйти из этой функции, если

someFlag == 'Y' 

затем не выполнять

someAnotherFunction(); 

Но она по-прежнему выполнять его.

WebStorm скажите, что это return не нужно, чтобы его можно было безопасно удалить.

+1

'if (someFlag == 'Y') {' условие должно быть неудачным. Вы становитесь настороже? – Tushar

+0

Да, предупреждение срабатывало. –

+1

Неожиданное поведение обычно происходит, когда код использует глобальные переменные. –

ответ

0

Если вы уверены, что если условие удовлетворены, но возвращение не работает, то вы можете также попробовать положить someAnotherFunction(); в другое:

if (someFlag == 'Y') { 
    alert('warning!'); 
    return; 
} 
else { 
    someAnotherFunction(); 
} 

Таким образом someAnotherFunction() может быть выполнена ОНЛ y, если блок if отсутствует.

Добавление

Исходный код должен работать, и это лишь временное решение, как было указано в комментарии. Однако оба метода достигают одной и той же цели в теории.

Для получения более подробной информации, проверьте this question - подробную информацию о различиях.

+1

'if' не является циклом. И хотя это хороший обходной путь, исходный код должен работать нормально. –

+0

Я имел в виду блок, а не петлю, ура. – AgataB

0

Вы можете поставить вызов на другую функцию в другом-блоке:

$scope.addToCart = function() { 
    var foo = 5; 
    if (someFlag == 'Y') { 
     alert('warning!'); 
     return; 
    } else { 
     someAnotherFunction(); 
    } 

}; 

Это должен принять вас ближе к пониманию того, что происходит на

Смежные вопросы