緩い等価比較と厳密等価比較
== と === による比較の違いを理解します。
「緩い等価比較と厳密等価比較」はCoddyKit上の無料JavaScript Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはJavaScript Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 JavaScript Academyコースには全4レッスンが含まれています。
2種類の等価演算子
JavaScriptには2種類の等価演算子があります。厳密等価(トリプルイコール)は変換せずに比較します。緩い等価(ダブルイコール)は比較前に型を変換します。
console.log(1 === 1)
console.log(1 == "1")厳密等価
厳密等価は、型と値の両方が一致する場合にだけtrueを返します。型強制は行われません。
console.log(5 === 5)
console.log(5 === "5")
console.log(true === 1)緩い等価では型が変換される
緩い等価では、比較前にオペランドを共通の型へ変換しようとするため、意外な比較結果としてtrueになることがあります。
console.log(5 == "5")
console.log(true == 1)
console.log(0 == false)数値と文字列
緩い等価で数値と文字列を比較すると、まず文字列が数値に変換されます。
console.log("10" == 10)
console.log("10" === 10)Booleanの型強制
緩い等価ではbooleanが数値に変換されるため、比較前にtrueは1、falseは0になります。
console.log(true == 1)
console.log(false == 0)
console.log(true == 2)NullとUndefined
緩い等価ではnullとundefinedは互いに等しいと扱われますが、0のような他の値とは等しくなりません。
console.log(null == undefined)
console.log(null === undefined)
console.log(null == 0)NaNの例外
NaNは、どちらの演算子を使っても、自分自身を含むどの値とも等しくなりません。NaNかどうかを確認するにはNumber.isNaNを使います。
console.log(NaN === NaN)
console.log(NaN == NaN)
console.log(Number.isNaN(NaN))オブジェクトの参照
オブジェクトは内容ではなく参照によって比較されます。同じプロパティを持つ別々のオブジェクトが等しくなることはありません。
const a = { x: 1 }
const b = { x: 1 }
console.log(a === b)
console.log(a === a)意外な緩い等価の結果
緩い等価では直感に反する結果になることがあります。空文字列は0と等しく、空配列は型強制後にfalseと等しくなります。
console.log("" == 0)
console.log([] == false)
console.log("0" == false)厳密等価を優先する
多くのスタイルガイドでは、予期しない型強制によるバグを避けるため、原則として厳密等価を使すことを推奨しています。緩い等価は、明確な理由がある場合だけ使います。
const value = "42"
if (value === "42") {
console.log("matched as string")
}NullまたはUndefinedを確認する
緩い等価が認められる用途の1つは、nullとundefinedをまとめて確認することです。ダブルイコールのnullパターンで両方を対象にできます。
function check(v) {
if (v == null) {
return "missing"
}
return "present"
}
console.log(check(undefined))
console.log(check(0))クイックチェック
等価演算子についての知識を確認してみましょう。
まとめ
まとめ:トリプルイコールは型強制を行わず、ダブルイコールは型強制を行います。
- 厳密等価は型と値を確認します
- 緩い等価は最初に共通の型へ変換します
- nullとundefinedが緩い等価で等しくなるのは、この組み合わせだけです
- 原則として厳密等価を使います
console.log(1 === 1)
console.log(1 == "1")よくある質問
「緩い等価比較と厳密等価比較」レッスンは無料ですか?
はい。「緩い等価比較と厳密等価比較」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、JavaScript Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 JavaScript Academyコースには全4レッスンが含まれています。
「緩い等価比較と厳密等価比較」で何を学びますか?
== と === による比較の違いを理解します。 ブラウザで直接実行するハンズオンコードでJavaScript Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
JavaScript Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのJavaScript Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「緩い等価比較と厳密等価比較」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このJavaScript Academyレッスンでコードを書いて実行できますか?
はい。すべてのJavaScript Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Truthy と Falsy の値
- 緩い等価比較と厳密等価比較
- 演算における暗黙の型変換
- 明示的な型変換の方法