JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptの==と===、どちらを使うべきか?等価演算子の違いを徹底解説

JavaScriptにおける==と===の違いとは?

JavaScriptには2種類の等価演算子が存在し、それぞれ動作が大きく異なります。適切に使い分けることは、バグの少ない安全なコードを書く上で非常に重要です。

==(ダブルイコール):抽象的等価演算子

==は「抽象的等価比較演算子」と呼ばれ、比較を実行する前にオペランドを同じ型へ変換(型強制)してから比較します。そのため、異なる型同士でも値が一致していればtrueを返します。

5 == 5      // true
'5' == 5    // true
5 == '5'    // true
0 == false  // true

このように、文字列の'5'と数値の5、さらには数値の0とbooleanのfalseまでも等しいと判定されます。一見便利に思えますが、暗黙的な型変換によって意図しない結果を招き、バグの原因になりやすい点には注意が必要です。

===(トリプルイコール):厳密等価演算子

===は「厳密等価比較演算子」と呼ばれ、型の変換を行わずにそのまま比較します。型が異なる場合や内容が異なる場合にはfalseを返します。

5 === 5     // true
5 === '5'   // false

var v1 = {'value': 'key'};
var v2 = {'value': 'key'};
v1 === v2   // false

オブジェクトの場合、===は値そのものではなく参照(メモリ上のアドレス)を比較します。そのため、中身が完全に同じでも別々のオブジェクトインスタンスであればfalseとなり、同一の参照を指している場合のみtrueを返します。

結局どちらを使うべきか?

一般的には===の使用が強く推奨されます。主な理由は以下の通りです。

  • 暗黙の型変換による予期しない挙動を防げる
  • コードの意図が明確になり、可読性が向上する
  • ESLintなどの主要なコーディング規約でも===の使用が推奨されている

なお、nullとundefinedをまとめてチェックしたい場合など、例外的に==が便利な場面もあります。しかし基本方針としては===を採用することで、より安全で保守性の高いJavaScriptコードを書くことができます。

  1. Windows 8のパスワードを忘れたときのリセット方法|画像・PIN・テキストパスワード完全ガイド

    Windows 8は、Microsoft史上最もセキュリティ性の高いOSとして、ログイン時に利用できる新しいパスワード方式を2つ導入しました。それが「4桁のPIN」と「ピクチャパスワード(画像パスワード)」です。PINを使えば素早くサインインでき、ピクチャパスワードなら写真をなぞるジェスチャで、より直感的かつ楽しくログインできます。とはいえ、従来のテキストパスワードも依然として重要です。ピクチャパスワードやPINをリセットする際には、通常のパスワードが必要になる場面があるためです。 Windows 8のパスワードを忘れてしまった方もご安心ください。本記事では、テキストパスワード、ピクチャパスワ

  2. Windows・Mac・オンラインでGoogle Earthを録画する方法【完全ガイド】

    世界は思っているよりずっと小さいもの。なぜそう言えるのか、ご存じですか?世界中を旅することが夢なら、旅行チケットに何千円も何万円も費やす必要はないかもしれません。Google Earthのようなプラットフォームが、あなたの世界一周の憧れを叶えてくれるからです。場所を入力するだけで、その土地のバーチャルな絶景を楽しむことができます。もちろん、実際にその場所へ足を運ぶ体験には及びません。しかし、例えば近いうちに家族や友人と一緒に旅行に行く予定の場所を、事前にGoogle Earthでバーチャルツアーとして共有したいと思ったことはありませんか?そんなとき、Google Earthの動画はどうやって撮