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

JavaScriptの==演算子と===演算子の違いを徹底解説

JavaScriptでは、2つの値(オペランド)を比較する際に「==(ダブルイコール)」と「===(トリプルイコール)」という2種類の等価演算子を使用できます。一見よく似ていますが、この2つには重要な違いがあり、使い分けを誤ると予期しないバグの原因になります。

==と===の主な違い

番号項目==(ダブルイコール)===(トリプルイコール)
1名称==は等価演算子(Equality Operator)と呼ばれます。===は同一性演算子/厳密等価演算子(Identity / Strict Equality Operator)と呼ばれます。
2比較方法比較の前に型変換(型強制)を行います。型変換を一切行わず、厳密な比較を行います。
3構文比較の構文は (a == b) の形式です。比較の構文は (a === b) の形式です。
4実際の動作まず両方のオペランドを同じ型に変換してから比較します。つまり、両者の型が揃った時点で比較が実行されます。この挙動は「型強制(Type Coercion)による比較」とも呼ばれます。一方、===は比較前にいかなる型変換も行いません。両方のオペランドの型と値が完全に一致した場合のみtrueを返します。

==と===の使用例

Equals.jsp

var a = true;
var b = 1;
var c = true;
console.log(a == b);  // 1がbooleanのtrueに変換されてから比較されるためtrue
console.log(a === c); // 両方ともboolean型なので変換は不要、そのまま比較してtrue
console.log(a === b); // 型変換は行われず、オペランド同士の型が異なるためfalse

出力結果

true
true
false

使い分けのポイント

上記の例のように、a == bでは数値の1が真偽値のtrueへと暗黙的に変換されるため、直感に反する結果になることがあります。このような予期しない型変換によるバグを防ぐため、現代のJavaScript開発では===(厳密等価演算子)の使用が推奨されています。==を使う場合は、暗黙の型変換の挙動を十分に理解した上で、意図的に活用することが大切です。

  1. PHPの「|」(ビットOR)と「||」(論理OR)演算子の違いを徹底解説

    「|」ビット単位OR演算子とは「|」はビット単位OR演算子です。数値を2進数のビット列として扱い、対応する各ビットを比較して、どちらか一方でも1であればそのビットを1に設定します。「||」論理OR演算子とは「||」は論理OR演算子で、オペランド全体を一つの値として評価します。if文などの条件分岐で真偽値を判定する際によく使われます。また、「||」には短絡評価(ショートサーキット評価)という特徴があり、左側のオペランドがtrueと評価された場合、右側の式は評価されません。サンプルコード以下の例では、「|」と「||」の動作の違いを実際のコードで確認できます。<!DOCTYPE html>

  2. 「!==」と「==!」の違いを解説!PHPの比較演算子

    PHPには一見よく似ていますが、動作がまったく異なる演算子が存在します。その代表格が「!==」と「==!」です。この記事では、それぞれの演算子の意味と違いを、サンプルコード付きでわかりやすく解説します。 「!==」比較演算子とは 「!==」は「型も含めて等しくない」ことを判定する比較演算子です。値の比較時にデータ型の自動変換(型ジャグリング)を行わず、厳密な型チェックを実施します。そのため、たとえば 1 !== 1 は数値の1と文字列の1というように型が異なるため、true を返します。 「==!」比較演算子とは 実は「==!」という単一の演算子は存在しません。「==!」は「==」と「!」