フィブログ

うさんくさいプログラムの備忘録とか。

JQueryのfunction内ですんなりreturnしないとき

プログラム書いてるとチェック処理メソッドなどでNGが判明したら

即座にfalseをreturnしてメソッド終わらせるなんてことはよくやると思いますが

なんかJQueryで書いてるとreturnで抜けないことがある

 

 

function(resultList){
  $.each(resultList, function(obj){
    if(obj == false){
       return false;  // ここで抜けたいけど何故か抜けない
    }
  });
  
  return true;
}

 なんでだろうと思ってたんですが、原因はeachの所為でした。

JQueryのeachの中ではreturnは特別な意味を持つようです。

each内で書くreturnは

 return true : continue

 return false: break

の意味になるそうです。

 

つまり、上記のソースだとbreakしてるだけになるので

eachを抜けて最終行のreturn trueが実行されます。

 

これ知らないとハマるわ。