Menu
Coddy logo textTech

厳密な比較と緩い比較

CoddyのJavaScriptジャーニー「基礎」セクションの一部 — レッスン 16/77。

JavaScriptには、2種類の等価演算子があります:等価演算子 (==) と 厳密等価演算子 (===) です。

ゆるい比較 (==) は、型強制(type coercion)を行った後に、2つの値が等しいかどうかをチェックします。これは、オペランドの型が異なる場合、JavaScriptは比較を行う前にそれらを共通の型に変換しようとすることを意味します。

例えば:

let b = 5 == "5";   // 比較の前に文字列の"5"が数値の5に変換されるため、trueになります
let b = 0 == false; // 比較の前にブール値の false が数値の 0 に変換されるため、true を保持します

一方、厳密等価 (===) は、型変換を行わずに2つの値が等しいかどうかをチェックします。オペランドの型が異なる場合、それらは等しくないとみなされます。

例えば:

let b = 5 === "5";   // 型変換が行われず、数値は文字列と等しくないため、falseを保持します
let b = 0 === false; // 型変換が行われず、数値の0は論理値のfalseと等しくないため、falseが代入されます

一般的に、型変換による予期しない結果を避けるために、ほとんどの場合で厳密等価演算子 (===) を使用することが推奨されます。

同様に、同様の仕組みで動作しますが、等価性ではなく不等価性をチェックする緩い不等価 (!=) 演算子と厳密な不等価 (!==) 演算子もあります。

緩い不等価演算子 (!=) は、型変換を行った後に2つの値が等しくないかどうかをチェックします。一方、厳密不等価演算子 (!==) は、型変換を行わずに2つの値が等しくないかどうかをチェックします。

challenge icon

チャレンジ

初心者

3つの変数 ab、および c を含むコードが与えられています。

あなたのタスクは、以下の比較を行い、その結果を出力することです:

  1. ab と等価(等しい)かどうかを確認し、その結果を d に代入してください。
  2. ac と厳密に等しいかどうかを確認し、その結果を e に代入してください。
  3. bc と等しくないかどうかを確認し、その結果を f に代入してください。
  4. ab と厳密に等しくないかどうかを確認し、その結果を g に代入してください。

与えられた変数と比較演算子を使用して、タスクを完了させてください。

チートシート

JavaScriptには2種類の等価演算子があります:

等価演算子(抽象的な比較) (==) は、比較の前に型強制(型変換)を行います:

5 == "5"   // true - 文字列の "5" が数値の 5 に変換される
0 == false // true - 真偽値の false が数値の 0 に変換される

厳密等価演算子 (===) は、型変換を行わずに比較します:

5 === "5"   // false - 数値と文字列、変換なし
0 === false // false - 数値と真偽値、変換なし

不等価演算子についても同様です:

  • 不等価演算子 (!=) - 型強制を行う
  • 厳密不等価演算子 (!==) - 型変換を行わない

型強制による予期しない結果を避けるために、厳密等価演算子 (===) を使用することが推奨されます。

自分で試してみよう

// 与えられた変数
let a = 10
let b = "10"
let c = true

// 以下にコードを入力してください


// 下の行は変更しないでください
console.log(`d = ${d}`)
console.log(`e = ${e}`)
console.log(`f = ${f}`)
console.log(`g = ${g}`)
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン