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

JavaScript演算子入門:比較演算子と等価演算子の違いを徹底解説

演算子(オペレーター)との最初の出会いは、小学校で算数を学んでいた頃かもしれません。演算子とは、2つの被演算子(オペランド)の間に置かれる記号のことです。Web開発では、演算子を使って2つの値を比較し、式が真(true)か偽(false)かを判定します。本記事では、JavaScriptで最も頻繁に登場する2種類の演算子——比較(関係)演算子と等価演算子——について詳しく解説します。

比較演算子(Comparison Operators)

問題を解決するためのロジックを組み立てる際、条件に応じて画面へ何かを表示させたい場面があります。そんなときに活躍するのが比較演算子です。ここでは、実際のコードでよく目にする代表的な演算子を紹介します。まずは、以降の例で使用するオブジェクトをご覧ください。

1. in 演算子

in 演算子を使うと、オブジェクト内に指定したプロパティが存在するかどうかを確認できます。

const cityData = {
  city: "San Jose",
  state: "California",
  area: 181.36,
  land: 178.24,
  water: 3.12,
  urban: 342.27,
  metro: 2694.61,
  elevation: 82,
  population: 1021795,
  timezone: "Los_Angeles/Pacific",
  website: "www.sanjoseca.gov"
}
console.log("metro" in cityData); // true
console.log("country" in cityData); // false

2. instanceof 演算子

instanceof 演算子は、あるオブジェクトが特定のクラスまたはコンストラクター関数のインスタンスであるかどうかを調べるために使います。

function Class(subject, teacher, numStudents) {
  this.subject = subject;
  this.teacher = teacher;
  this.numStudents = numStudents;
}
const classroom = new Class('Academic Geometry', 'Jane Doe', 24);

console.log(classroom instanceof Class);
// 出力: true

console.log(classroom instanceof Object);
// 出力: true

3. 小なり(<)・以下(<=)

被演算子Aが被演算子Bより小さい場合に、条件式がtrueを返す比較演算子です。最もよく見かけるのはforループの中でしょう。

for(let i = 1; i <= n; i++) {
  // ここにコードを書く
}
for(let i = 0; i < arr.length; i++) {
  // ここにコードを書く
}

4. 大なり(>)・以上(>=)

被演算子Aが被演算子Bより大きい場合に、条件式がtrueを返す比較演算子です。配列の中から最大値を探す処理などで頻繁に使われます。

let maximum = -Infinity;
for(let i = 0; i < arr.length; i++) {
  if(arr[i] >= maximum) {
    maximum = arr[i];
  }
}

注意:>= と => は別物です。後者はES6(ECMAScript 2015)で導入されたアロー関数の記法に使われます。

等価演算子(Equality Operators)

比較演算子と同様に、等価演算子も式が真であるかどうかを示す真偽値(Boolean)として評価されます。

等価(==)と厳密等価(===)の違い

JavaScriptで等号(=)を目にしたとき、1つの等号は代入演算子であり、数学の授業で馴染んだ「等しい」という意味ではない点に注意が必要です。

等号が2つ並ぶ(==)のは等価演算子です。これは、値同士を比較する際に、互いのデータ型への変換を試みた上で等しいかどうかを判定します。この仕組みは「型強制(type coercion)」と呼ばれます。

console.log(8 == '8'); // true

同様に、感嘆符と1つの等号を組み合わせた(!=)は不等価演算子と呼ばれ、2つの値が等しくないことを比較します。ただし、型まではチェックしません。

console.log(8 != '4'); // true

一方、等号が3つ並ぶ(===)厳密等価演算子は、値だけでなくデータ型も含めて比較します。

console.log(8 === '8'); // false
console.log(8 === 8); // true

不等価演算子と同じように、非同一演算子(!==)は被演算子同士が等しくないかどうかをチェックします。加えて、型の一致も確認します。両者が異なる場合は条件が成立してtrueを返し、そうでなければfalseを返します。

console.log(8 !== '8'); // true
console.log(8 !== 8); // false

まとめ

比較演算子と等価演算子は、プログラミングにおけるロジック構築に欠かせない存在です。左辺と右辺の被演算子を比較するとき、等価演算子を使えば「値だけが等しい」「型まで一致している」「型と値の両方が異なる」などを正確に判定できます。さらに、比較演算子はユーザーインターフェース(UI)を描画するための条件分岐ロジックにも大いに役立ちます。これらの演算子に自信がついたら、次は論理演算子、三項演算子、ビット演算子にも挑戦してみましょう!

JavaScriptのチュートリアルをもっと読みたい方へ

以下の関連記事もぜひチェックしてください。

  • JavaScript 三項演算子:ステップバイステップガイド
  • JavaScript switch文:ステップバイステップガイド
  • JavaScript 構文:初心者向けガイド
  1. JavaScriptにおける厳密等価演算子(===)と寛容等価演算子(==)の違いを徹底解説

    はじめにJavaScriptには、値を比較するための2種類の等価演算子が用意されています。それぞれ動作が異なるため、適切に使い分けることが重要です。寛容等価演算子(==)とは寛容等価演算子(==)は、比較対象となるオペランド同士の値を共通の型に変換(型強制)した上で、等しいかどうかを判定します。そのため、数値と文字列のように異なる型同士でも、「値が同じ」とみなされれば true を返します。厳密等価演算子(===)とは一方、厳密等価演算子(===)は、値だけでなくデータ型まで含めて比較を行います。値と型の両方が一致した場合にのみ true を返し、それ以外は false を返します。予期しない

  2. JavaScriptの緩い等価(==)演算子とは?仕組みと使い方を解説

    JavaScriptにおける「緩い等価(Loose Equality)」を表す演算子が「==」(抽象的等価演算子)です。この演算子を使うと、比較対象となるオペランド同士の値がまず共通の型へ自動的に変換され、その上で等しいかどうかが判定されます。 そのため、型が異なる値同士であっても比較が成立します。例えば、数値の 1 と文字列の 1 を比較すると、文字列側が数値へ変換されて true となります。また、undefined == null も特別なルールによって true と評価されます。 一方で、暗黙的な型変換によって意図しない結果を招く可能性があるため、実務ではより厳密な比較を行う「===