この章では、JavaScript の等価記号と厳密等価記号について詳しく紹介します。必要な方は参照してください。
JavaScript には、2 つの値が等しいかどうかを判断する 2 つのメソッドがあります。
等号
等号は 2 つの等号で構成されます。 ==
JavaScript は弱く型付けされた言語です。これは、等号記号が 2 つの値を比較するために型をキャストすることを意味します。
"" == "0" // false 0 == "" // true 0 == "0" // true false == "false" // false false == "0" // true false == undefined // false false == null // false null == undefined // true " \t\r\n" == 0 // true
上記のコードは型変換の結果を示しているため、等号記号 == の使用はプログラミングの悪い習慣であることがわかります。 Javascript の複雑な型変換メカニズムにより、結果として生じるエラーを追跡することが困難になります。
さらに、型強制はパフォーマンスにも一定の影響を与えます。たとえば、文字列を数値と比較する場合、文字列は数値に強制されます。
厳密等号記号
厳密等号記号は 3 つの等号で構成されます: ===
等号記号と同様に動作しますが、厳密等号記号は強制的な型変換操作は実行されません。
"" === "0" // false 0 === "" // false 0 === "0" // false false === "false" // false false === "0" // false false === undefined // false false === null // false null === undefined // false " \t\r\n" === 0 // false
上記のコードにより、2 つの値の型が異なる場合に false が直接返されるため、パフォーマンスも向上します。
オブジェクトの比較
== と === は等価記号と呼ばれますが、比較される 2 つの値のどちらかがオブジェクトである場合、動作は大きく異なります。
{} === {}; // false new String('foo') === 'foo'; // false new Number(10) === 10; // false var foo = {}; foo === foo; // true
ここでは、2 つの値が等しいかどうかを比較するだけではなく、2 つの値が同じオブジェクト インスタンスを参照しているかどうかを判断します。この動作は、よりポインタに似ています。 C.
概要
厳密等号記号 === のみを使用することを強くお勧めします。型変換を行う必要がある場合は、JavaScript 独自の複雑なキャスト メソッドに依存する代わりに、比較の前に明示的に型変換を行うことができます。
上記はこの章の全内容です。その他の関連チュートリアルについては、JavaScript ビデオ チュートリアル をご覧ください。