厳密な比較と緩い比較
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つの値が等しくないかどうかをチェックします。
チャレンジ
初心者3つの変数 a、b、および c を含むコードが与えられています。
あなたのタスクは、以下の比較を行い、その結果を出力することです:
aがbと等価(等しい)かどうかを確認し、その結果をdに代入してください。aがcと厳密に等しいかどうかを確認し、その結果をeに代入してください。bがcと等しくないかどうかを確認し、その結果をfに代入してください。aがbと厳密に等しくないかどうかを確認し、その結果を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}`)このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。