JSLintでは ++
を使うとエラーになる。++i
の代わりに i += 1
と書くようにということのようだ。でも、+= 1
は ++
の正確な代替ではなかった。
加法演算子は被演算子の少なくとも一方が文字列なら、文字列連結処理になる。一方、前置増分演算子 (++
) は初めに被演算子に ToNumber 内部関数を適用してから 被演算子 = 被演算子 + 1
を行う。つまり、結果は必ず数値(NaNを含む)となる。
ということで、++i
の代わりになるのは、正確には i = +i + 1
だった(単項 + 演算子は ToNumber 内部関数を適用する)。