typeofの結果を「==」で比較する場合と、「===」で比較する場合で、差がでるのか出ないのかを教えて下さい。
元のコードは以下でした。
typeof v == "boolean"
それが以下のように修正されていました。
typeof v === "boolean"
イコールが一つ増えていたのみでそれ以外の差はありません。
右辺は「"boolean"」の文字列固定です。
左辺は「typeof v」です。当然、「v」が変数で変化します。
等価演算子と厳密等価演算子の違いの一般論はわかります。
この担当者は、この部分に手を加えたのは1ヵ月以上前のことで、なぜ修正したか覚えていないそうです…。
typeofの戻り値はstring型固定のはず…。右辺は変わりようがないのでstring型固定。絶対に変わることがないstring型同士の比較であれば、等価演算子だろうと厳密等価演算子だろうと結果は変わらないように思います。
少なくとも悪い影響は出なさそうということはわかります。しかしメインの修正と別にわざわざこう修正したということは、前のコードになにか問題があった可能性が拭いきれず気になります。また修正を加えるのなら基本的に期待通りに挙動が変わっていることをテストしなければなりませんが、挙動が変わるか変わらないかすらわからずテストなどできません。
「特別な理由がないのに==を使うべきではない」「訳わからなくてもとりあえず===にしとけばいいんだ」などというご意見もあるかもしれませんが、それは脇に置いておいてください。
typeofの結果を「==」で比較する場合と、「===」で比較する場合で、
- 差がでるのか出ないのか
- 差が出るならどういう場合か
この点を教えて下さい。よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー