業務でコードレビューを行っている時に、メンバーのソースで意図せず"=="と"==="が混在していたので。
改めて違いについて記事にしてみます。
等価演算子(==)と厳密等価演算子(===)の定義
JavaScriptでもTypeScriptでも、等価演算子は非推奨で、厳密等価演算子を用いることが推奨されています。
”=="と”===”は厳密には異なる挙動を示します。
MDNのドキュメントを確認してみましょう。
等価演算子
等価演算子 (==) は、二つのオペランドが等しいことを検査し、論理値で結果を返します。厳密等価演算子とは異なり、オペランドの型が異なる場合には型の変換を試みてから比較を行います。
厳密等価演算子
厳密等価演算子 (===) は、二つのオペランドが等しいことを検査し、論理値で結果を返します。*等価演算子とは異なり、厳密等価演算子はオペランドの型が異なる場合、常に異なるものと判断します。*
実際の挙動を確認してみる
数値型の比較
console.log(1 == 1);
// true
console.log(1 === 1);
// true
文字列型の比較
console.log('hello' == 'hello');
// true
console.log('hello' === 'hello');
// true
数値型と文字列型の比較
cconsole.log('1' == 1);
// true
console.log('1' === 1);
// false
数値型と真偽型の比較
console.log(0 == false);
// true
console.log(0 === false);
// false
## まとめ
公式で推奨されていた通り、型まで等価であることが確認できる===を使うのが良さそうです。
実務だとコードを書いていく時、「公式に推奨されているから」や「現場の規約で決まっているから」などなぜ、どういった理由で推奨されているのかを考えながらコーディングをするということが技術力の底上げになっていくと思います。
少しでも参考になれば幸いです。