これは「暗黙的な型変換」と呼ばれ、さまざまなシナリオで発生します。本書「You Don't Know JS」を読むことをお勧めします。本の中にはそれを詳しく説明した章もあります。
Here is an example, do you know what the result is?
('b' + 'a' + + 'a' + 'a').toLowerCase()
This part is the 「暗黙的な型変換」, because it runs Number("a")
in the background and outputs NaN
, then this script will become
('b' + 'a' + Number("a") + 'a').toLowerCase()
// the result of this part
('b' + 'a' + NaN + 'a').toLowerCase()
Then it runs String(NaN)
in the background
('b' + 'a' + String(NaN) + 'a').toLowerCase()
// the result of this part
('b' + 'a' + 'NaN' + 'a').toLowerCase()
After all it will output this banana
(バナナ)
したがって、この+演算子に関する問題は、暗黙的な型変換の一部です。