Как назвать возврат внешней функции из внутренней функции?

У меня есть такой код:

function allValid() {
    $('input').each(function(index) {
        if(something) {
            return false; 
        }    
    });

    return true;
}

который всегда возвращает true как return false; влияет на анонимную внутреннюю функцию. Существует ли простой способ назвать возврат внешней функции?

PS. Я не ищу обходное решение, просто хочу знать ответ на исходный вопрос. Если ответ "не возможен", он прекрасен.

29
задан Ivar 30 July 2018 в 07:20
поделиться

3 ответа

Да, сохранить его в локальной переменной.

function allValid() {
  var allGood = true;
  $('input').each(function (index) {
    if (something) {
      allGood = false;
    }
  });

  return allGood;
}
21
ответ дан 28 November 2019 в 02:03
поделиться

Вы также можете сделать это с помощью фильтра :

var anyInvalid = $('input').filter(function(index) {
                   if(inValidCheck)
                     return true;
                 }).length;

Это работает, потому что 0 рассматривается как ложь, но фактически дает вам количество недопустимых, которое вы можете использовать для отображения «У вас 3 недопустимые записи» или чего-то еще, если хотите.

5
ответ дан 28 November 2019 в 02:03
поделиться

Если вы хотите сделать это эффективно, я думаю, это лучший способ:

function allValid() {
  elements = $('input')
  for (i = 0; i < elements.length; i++) { invalidityCheck(elements[i]) && return false; }
  return true;
}

Изменить: Хотя более версия JavaScript-y могла бы вероятно, используйте исключения:

function allValid() {
  try
    $('input').each(function(index)) {
      if (something) { throw 'something happened!'; }
    });
  catch (e) {
    if (e == 'something happened!') {
      return false;
    } else {
      throw e;
    }
  }
  return true;
}
1
ответ дан 28 November 2019 в 02:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: