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

JavaScriptの「==」と「===」の違いを徹底解説!等価演算子の正しい使い分け

JavaScriptには、値が等しいかどうかを比較するための演算子として「==」(等価演算子)と「===」(厳密等価演算子)の2種類があります。この2つの主な違いは、「==」は値のみを比較するのに対し、「===」は値に加えてデータ型(String、Booleanなど)まで比較するという点です。

「==」演算子(等価演算子)

「==」演算子は、比較対象の値が等しいかどうかだけを判定します。データ型が異なる場合でも、JavaScriptが自動的に型変換(暗黙の型変換)を行ってから比較するため、見た目上同じ値であればtrueを返します。

次の例では、代入された値がデータ型に関係なく等しいかどうかを確認しています。

サンプルコード

<html>
<body>
<p id="strict"></p>
<script>
    var x = 5;
    var y = 5;
    var z = 6;
    document.getElementById("strict").innerHTML =
    (x == y) + "<br>" + (x == z);
</script>
</body>
</html>

実行結果

true
false

この例では、xとyはどちらも数値の5なので「x == y」はtrueになります。一方、zは6であるため「x == z」はfalseとなります。

「===」演算子(厳密等価演算子)

「===」演算子は、値とデータ型の両方が一致した場合にのみtrueを返します。どちらか一方でも異なればfalseを返します。

次の例では、すべての変数(x、y、z)に5という値が代入されていますが、yとzには文字列型(String)の"5"が代入されている点に注目してください。

サンプルコード

<html>
<body>
<p id="strict"></p>
<script>
   var x = 5;
   var y = "5";
   var z = "5";
   document.getElementById("strict").innerHTML =
   (x === y) + "<br>" + (x == z);
</script>
</body>
</html>

実行結果

false
true

xは数値型の5、yは文字列型の"5"です。「x === y」は値は同じでもデータ型が異なるためfalseになります。一方、「x == z」では型変換が行われるためtrueが返されます。

まとめ:どちらを使うべき?

演算子比較内容特徴
==値のみ型変換を行ってから比較する(緩い比較)
===値+データ型型変換を行わず厳密に比較する

予期しないバグを防ぐため、実務では型変換による意図しない挙動を避けられる「===」を使用することが推奨されています。特にnullやundefined、0や空文字列などの比較では「==」が思わぬ結果を返すことがあるため、注意が必要です。

  1. C#における「||」演算子と「|」演算子の違いとは?

    C#には、|| は論理OR(Logical OR)演算子、| はビット単位の論理OR(Bitwise Logical OR)演算子として存在します。どちらもブール値に対して使用できますが、両者の根本的な違いは評価(実行)のされ方にあります。構文はどちらも同じ形式です。bool_exp1 || bool_exp2bool_exp1 | bool_exp2一見すると構文はよく似ていますが、実際の動作はまったく異なります。|| 演算子(短絡評価)の動作まず bool_exp1 が評価され、その結果によって2つ目の式を評価するかどうかが決定されます。bool_exp1 が true であれば、OR の

  2. JavaとJavaScriptの違いとは?歴史・技術・使い分けを徹底解説

    ウェブ開発者のジェレミー・キースは2009年、「JavaとJavaScriptの関係は、ハムとハムスターの関係のようなものだ」と語りました。この比喩がどれほど正確かは議論の余地がありますが、その本質は的確です。共通する言語的ルーツを持つにもかかわらず、JavaとJavaScriptはまったく異なる2つのプログラミング言語なのです。年月とともに両者の重なりも多少増えましたが、今なおJavaScriptはウェブサイトにインタラクティブ性をもたらすフロントエンド言語の主流であり続け、Javaはサーバーサイドやアプリケーション開発で人気を保っています。開発者を採用したい方、プログラミングを学びたい方