ITコンサルの日常

ITコンサル会社に勤務する普通のITエンジニアの日常です。

ぱっと見では分からなかったバグ

問題のコード

Date.prototype.getYYYYMMDD = function() {
  var yyyy = this.getFullYear();
  var mm = this.getMonth() + 1;
  var dd = this.getDate();
  if (mm < 10) mm = "0" + mm;
  if (dd < 10) dd = "0" + dd;
  return yyyy + mm + dd;
};

このコード見ただけでバグが分かった人は素晴らしい。

ヒント1

2012/03/22は正しく動作するけど、2012/10/22は正しく動作しない。

ヒント2

文字列と数値

答え

mmまたはddが10未満の場合、"0"を連結しているので、returnのところの+演算子が文字列連結になるけど、mmとddが共に10以上の場合、単なる数値の足し算になるので、正しく動作しない。
というオチでした。
ショボすぎる。。。