簡體   English   中英

在enumarable.each迭代中中斷函數

[英]Break out of function within enumarable.each iteration

我有一個Prototype類 - 在類中我調用一個函數,在這個函數中我做enumerable.each迭代。 如果此迭代中的元素未通過檢查,則調用另一個函數,然后稍后重新調用此相同的函數。 我可以在這個迭代中破解,因此不僅迭代結束,而且函數內沒有其他任何東西被調用。

說這個代碼我不希望調用console.log,如果elm.something == 'whatever '。 顯然我可以設置一個變量,然后在函數后檢查這個,但是還有其他我應該做的事情嗎?

myFunction: function(el){
    el.each(function(elm){ 
        if(elm.something == 'whatever'){
            this.someOtherFunction(elm);
        }
    },this);            
    console.log("i dont want this called if elm.something == 'whatever'");
}

為了清楚console.log ,在這種情況下, console.log只是占位符代碼,用於在此循環之后執行的一些額外邏輯的開頭

最簡單的方法是避免使用each(),而是使用for循環重寫:

myFunction: function(el){
    for(var i in el) {
      var elm = el[i];
        if(elm.something == 'whatever'){
            return this.someOtherFunction(elm);
        }
    }
    console.log("i dont want this called if elm.something == 'whatever'");
}

你自己回答“顯然我可以設置一個變量,然后在功能后檢查這個”

在這種情況下,你基本上不想調用console.log,即使elm.something =='what'對於單個'elm'

myFunction: function(el){
    var logIt = true;
    el.each(function(elm){ 
        if(elm.something == 'whatever'){
            logIt = false;
            this.someOtherFunction(elm);
        }
    },this);            
    logIt && console.log("i dont want this called if elm.something == 'whatever'");
}

暫無
暫無

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

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