【JavaScript】暗黙的な型変換の良い例
↑に貼っている、前回のメモのおまけの内容になります。
1つ目の実験、a, b, cの引数に3, 3, '3'と渡し、それらを足した結果をコンソールログで出した結果、63と出ました。
これはaとbはnumber型だから、問題なく足し算され6になります。
ただ、最後の'3'はstring型と認識されるので文字としてくっ付きます。
ここまでは想像通りの結果でした。
ではtypeofで型も調べてみます。
するとstringと出ました。
ん...?6はnumber型のはず、number要素はどこかに行ってしまいました。
そう、これが暗黙的な型変換みたいですね。
2つ目の実験、a, b, cの引数に'3',3, 3と渡し、それらを足した結果をコンソールログで出した結果、333と出ました。
これはaのstring型にbとcのnumber型を足し算しています。
ん...?bとcはnumber型なのに数字らしく足し算をしていないだと!?
そう、これが暗黙的な型変k(ry
先頭(ここではa)がstring型だと、後に続く(ここではb,c)number型は計算する前にstring型に暗黙的に変換されました。
1つ目と2つ目のログは、本当に信用できるのか。
この結果の63と333は今後string型として本当に利用できるのか。
以下7行目から実験しました。
厳密等価演算子で調べてもstring型と言い張るので、これはもう完全なstring型でした。
こんな事象があることを知っていれば、今後あれ?となることが減るかもしれませんね。