JavaScriptの ++i は i += 1 ではない

JSLintでは ++ を使うとエラーになる。++i の代わりに i += 1 と書くようにということのようだ。でも、+= 1++ の正確な代替ではなかった。

加法演算子は被演算子の少なくとも一方が文字列なら、文字列連結処理になる。一方、前置増分演算子 (++) は初めに被演算子ToNumber 内部関数を適用してから 被演算子 = 被演算子 + 1 を行う。つまり、結果は必ず数値(NaNを含む)となる。

ということで、++i の代わりになるのは、正確には i = +i + 1 だった(単項 + 演算子は ToNumber 内部関数を適用する)。