JavaScriptは文字を連結する際に文字列を必要とする場面ではどのような値でも文字列に使用とし、数値が必要となる場面では数値に変換しようとします。(変換できない場合はNaNに変換します)。今回はその例をメモします。
まず文字列同士は連結し、数値同士は計算します
'こんばんは' + ' おはよう' // => こんばんは おはよう
'こんばんは' * ' おはよう' // => NaN 数値変換できないのでNaNが返る
4 + 8 // => 12
4 * 8 // => 32
次に数値と文字列の場合、文字列と数値の文字列は文字列に変換します
また、文字列と数値で計算しようとするとNaNを返します
4 + ' おはよう' // => 4 おはよう
'こんばんは' + '8' // => こんばんは8
'こんばんは' * 32 // => NaN
'こんばんは' - '32' // => NaN
文字列の数値同士では加算では文字列で連結それ以外は数値に変換され、計算されます
注意したいです
'4' + '8' // => 48 加算のみ連結する
'5' - '10' // => -5
'7' * '3' // => 21
'24' / '6' // => 4
'7' % '4' // => 3
加算は左から順に処理が行われるのでケースによって違う結果を変えします。
1200 + 1400 + '歳です' // => 2600歳です
'年齢は' + 1200 + 1200 + '歳です' // => 年齢は12001600歳です
もし加算で数値と文字列を混在させる場合は()で演算する順序を変更させましょう
'年齢は' + (1200 + 1200) + '歳です' // => 年齢は2600歳です
結構ルール細いね。
数値はなるべくNumber(数値型)で扱ったほうがエラー少なくていいかも( ◠‿◠ )
参考