くまおの森

フロントエンドで学んだこと知ったことを自分なりに噛み砕いてメモしてく技術ブログ

【JavaScript】暗黙的な型変換の良い例

kumao-no-mori.hatenablog.com

↑に貼っている、前回のメモのおまけの内容になります。

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型でした。

こんな事象があることを知っていれば、今後あれ?となることが減るかもしれませんね。