読者です 読者をやめる 読者になる 読者になる

JavaScriptのfor文の条件に文字列リテラルを使う時の注意点

JavaScript

ちょっと簡略化してあるが、JavaScriptで以下のコードがうまく動かなかった。for文の中にさえ入ってこない。

var kanto = "8-14";
var range = kanto.split("-");
for (var i = range[0]; i <= range[1]; i++) {
    // 処理
}

結局range[0]、range[1]をparseIntすれば動いた。

var kanto = "8-14";
var range = kanto.split("-");
for (var i = parseInt(range[0]); i <= parseInt(range[1]); i++) {
    // 処理
}

この記事を書く途中で見つけたページによると、比較演算子「<=」は数値だけではなく文字列にも使えるらしい。だからparseIntを使わないと、数値変換されずに文字列比較されて想定通りの動作をしなかった。
ちなみに var kanto = "08-14" としておけば問題なく動く。明示的な変換、キャストが必要ないと、逆に言語の細かな部分の仕様を知っておく必要があるのかな、と思ったり。何事もトレードオフか。。