メソッドは.text()
常に文字列を返します。演算子などの一部の演算子は、+
算術演算と文字列演算の両方を実行するためにオーバーロードされています。文字列の場合、連結を実行するため、結果は "51" になります。
文字列があり、非強制演算子を使用する必要がある場合は、parseInt
(または数値に変換する他の方法) を使用する必要があります。
ただし、*
たとえば暗黙の演算子はこの強制を実行するためparseInt
、その状況では呼び出しは必要ありません (たとえば、更新されたフィドルを参照してください)。
インクリメント++
演算子はそのオペランドを強制しますが、後置演算子を使用しているため、効果がないことに注意してください。前置演算子を使用すると、それが機能していることがわかります。
$('#withoutParseIntButIncrement').text(++value);
要約すると、次のようになります。
// Parses string to number and adds 1
$('#withParseInt').text(parseInt(value) + 1);
// Coerces number 1 to string "1" and concatenates
$('#withoutParseInt').text(value + 1);
// Implicity coerces string to number, but after it's been inserted into the DOM
$('#withoutParseIntButIncrement').text(value++);
// Implicity coerces string to number, before it's been inserted into the DOM
$('#withoutParseIntButIncrement').text(++value);
// Implicity coerces to number
$('#withoutParseIntButMultiply').text(value * 2);
補足: 常に 2 番目の引数 (基数) を に渡すことをお勧めしparseInt
ます。これにより、数値が正しい基数で解析されます。
parseInt(value, 10); // For base 10