non vorrei lavorare

ブログ名の通りです。javascript three.js mruby rust OCaml golang julialang blender

俺が日付処理でやらかしたとんでもないバグが12月に分かった

はじめに

この記事は、@kjunichiの2014年パーソナルアドベントカレンダーの23日目の記事です。

日付処理でやらかしたとんでもないバグ

やりたかった処理

指定した年、月から現在年、月までを処理する。

やらかしたコード

var cyy = 現在の年;
var cmm = 現在の月;

var tmpY = ループで処理する年(初期値は指定した年);
var tmpM = ループで処理する付(初期値は指定した月);

while(tmpY < cyy || tmpM <= cmm) {
 console.log(tmpY+","+tmpM); // ログ出力
  // 処理
 // tmpY,tmpMの更新処理

}

どんな動きをしたか

12月に実行するとtmpM<=cmmが常に真12==12

正解は

while(tmpY <= cyy && tmpM <= cmm) {
  // 処理
}

このバグ対応で分かったこと

Firefoxでは無限ループないのconsole.logが出力されない。Chromeは頑張って出来る限り出力する。

Link