JavaScript は、オブジェクトに対してファンキーな自動変換を行います。
var o = {toString: function() {return "40"; }};
print(o + o);
print((o+1)+o);
print((o*2) + (+o));
印刷されます:
4040
40140
120
これは、引数のいずれかがオブジェクト/文字列である場合、+ はすべての引数を文字列に変換してから連結しようとするためです。すべての引数が数値の場合は、それらを合計します。* および単項 + toString を使用してオブジェクトを数値に変換します (ここには示されていませんが、valueOf も同様です)。
JavaScript は ++ 演算子に対して何をしますか?