Javascriptを勉強している際に「 == 」ではなく「 === 」を使うべきと聞きました。
しかしそれから月日が流れ、Javascript絡みの記事を読んでいたら「 === 」を使おうと書かれていて「あれ、なぜだっけ?」となったので復習がてらまとめてみました。
「 == 」と「 === 」演算子の違い
== 等価演算子について (Equality operator)
- 両社比較して同じ型同じ値かを判断する
- 同じ型ではなかった場合、値を変換して比較する
この2の処理により、まれに予期しない結果となることがあります。
=== 厳密等価演算子について (Strict equality operator)
- 両社比較して同じ型同じ値かを判断する
- もし型がことなればfalse
2の処理が==より少ないため、処理スピードも===の方が早いことも理由の一つです。
「 == 」と「 === 」の違いがわかる サンプルコード
サンプルコードです。
console.log(1==’1′); // true
console.log(1===’1′); // false
console.log(true== 1); // true
console.log(true=== 1); //false
なぜこのような違いになるのかといえば、型の違いです。
「==」では型を変換してから比較するので予期しない結果を招くこととなるようです。
「!=」と「!==」も同じ
「!=」と「!==」も同じで「!==」が推奨されています。(!は否定を表します。)
「!=」と「!==」の違いがわかるサンプルコード
console.log(1!=’1′); // false
console.log(1!==’1′); // true
console.log(true!= 1); // false
console.log(true!== 1); //true
「==」と「===」のときと逆の結果となります。
違いは同じく型を変換してから比較するかしないかです。
参考
以下の記事をもとに書きました。より詳しい説明が書かれています。
Equality & strict-Equality Operators in javaScript