簡體   English   中英

如何調用外部函數從內部函數返回?

[英]How to call outer function's return from inner function?

我有這樣的代碼:

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

    return true;
}

return false;總是返回true return false; 影響匿名內部功能。 是否有一種簡單的方法來調用外部函數的返回?

PS。 我不是在找一個解決方法,只是想知道原始問題的答案。 如果答案“不可能”,那就沒問題了。

是的,將它存儲在局部變量中。

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

  return allGood;
}

您也可以使用過濾器執行此操作:

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

這是有效的,因為0被視為false,但實際上它給你無效的數量,你可以使用它來顯示“你有3個無效的條目”或者你想要的東西。

如果你想有效地做到這一點,我認為這是最好的方法:

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;
}

您也可以使用Array.prototype.some進行迭代,直到找到符合條件的元素。

function allValid() {
    var inputs = $('input');
    if(inputs.toArray().some(function(input){
        if(something)
            return true;
    })) {
        return false;
    } else {
        return true;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM