JavaScript Garden-等しいと比較
2326 ワード
同等と比較
JavaScriptでは、2つの値が等しいかどうかを判断する方法が2つあります.
イコールオペレータ
イコールオペレータは2つの等号で構成されています:
上記の表は強いタイプの変換を示しており、
また、強制タイプ変換は、文字列が配列と比較するために事前に数値に強制的に変換されるなど、パフォーマンスの消費をもたらします.
厳密イコールオペレータ
厳密なイコールオペレータは、
通常はオペレータに等しくしたくないし、厳密にはオペレータに等しく、強制タイプ変換は行われません.
上記の結果はより明確で、コードの分析に有利である.2つのオペランドのタイプが異なる場合、等しくないことは間違いなく、パフォーマンスの向上にも役立ちます.
オブジェクトの比較
ここで、オペレータが比較するのは、値が等しいかどうかではなく、同じアイデンティティに属しているかどうかです.すなわち,オブジェクトの同じインスタンスのみが等しいと考えられる.これはPythonの
結論
厳密イコールオペレータの使用を強くお勧めします.タイプが変換する必要がある場合は、言語自体の複雑な強制変換ルールではなく、比較前の明示的の変換を使用する必要があります.
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
" == 0 // true
上記の表は強いタイプの変換を示しており、
==
を用いることがプログラミング習慣が悪い主な原因として広く考えられているが、その複雑な変換規則のため、追跡しにくい問題を招く.また、強制タイプ変換は、文字列が配列と比較するために事前に数値に強制的に変換されるなど、パフォーマンスの消費をもたらします.
厳密イコールオペレータ
厳密なイコールオペレータは、
===
という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
" === 0 // false
上記の結果はより明確で、コードの分析に有利である.2つのオペランドのタイプが異なる場合、等しくないことは間違いなく、パフォーマンスの向上にも役立ちます.
オブジェクトの比較
==
と===
のオペレータはすべてオペレータに等しいが、そのうちの1つのオペランドがオブジェクトである場合、動作は異なる.{} === {}; // false
new String('foo') === 'foo'; // false
new Number(10) === 10; // false
var foo = {};
foo === foo; // true
ここで、オペレータが比較するのは、値が等しいかどうかではなく、同じアイデンティティに属しているかどうかです.すなわち,オブジェクトの同じインスタンスのみが等しいと考えられる.これはPythonの
is
とCのポインタの比較に似ています.結論
厳密イコールオペレータの使用を強くお勧めします.タイプが変換する必要がある場合は、言語自体の複雑な強制変換ルールではなく、比較前の明示的の変換を使用する必要があります.