論理または(||)
var result = true ||間違い;
ロジックと操作と同様に、ブール値ではないオペランドがある場合、ロジック、または必ずしもブール値を返します。この時点で、それは次のルールに従います。
□最初のオペランドがオブジェクトである場合、最初のオペランドが返されます。
□最初のオペランドがfalseに評価された場合、2番目のオペランドが返されます。
□両方のオペランドがオブジェクトである場合、最初のオペランドが返されます。
□両方のオペランドがnullの場合、nullを返します
□両方が未定義の場合は、未定義の返されます。
□両方がnanの場合は、ナンを返します
「===」と「==」の違い
平等オペレーター(==)
等しい演算子は、操作値を暗黙的に変換し、それらを比較します。
操作値がブール値である場合、それは比較前に数値に変換されます
1つの操作値が文字列であり、もう1つの操作値が数値である場合、文字列はnumber()関数を介して数値に変換されます
1つの操作値がオブジェクトであり、もう1つの操作がそうでない場合、オブジェクトの値()メソッドが呼び出され、結果は以前のルールに従って比較されます
nullと未定義は等しい
操作値がnanの場合、平等比較はfalseを返します
両方の操作値がオブジェクトである場合、それらが同じオブジェクトを指すかどうかを比較します。両方のオペランドが同じオブジェクトを指している場合、等しいオペレーターは真で返されます。そうでなければ、falseを返します
以下について別々に説明します。
===について話しましょう、これは比較的簡単です。次のルールは、2つの値===が等しいかどうかを判断するために使用されます。
1.タイプが異なる場合、それらは[不平等]です
2。両方が数値値であり、同じ値である場合、[等しい]; (!例外)は、少なくともそのうちの1つがnanである場合、[等しくない]です。 (値がnanであるかどうかを判断するには、isnan()のみを使用して判断できます)
3.両方が文字列であり、各位置の文字が同じ場合、[平等];それ以外の[等しくない]。
4.両方の値が真であるか、両方が偽の場合、[等しい]。
5.両方の値が同じオブジェクトまたは関数を参照する場合、[等式];それ以外の[等しくない]。
6.両方の値がnull、または両方が未定義である場合、[等]。
次のルールに従って、==について話しましょう。
1. 2つの値タイプが同じ場合、===比較を作成します。
2。2つの値タイプが異なる場合、それらは等しい場合があります。タイプ変換は、次のルールに従って実行され、次に比較されます。
a。 1つがnullで、もう1つが未定義の場合、[等しい]。
b。 1つが文字列であり、もう1つが数値の場合は、文字列を数値に変換してから比較します。
c。値が真である場合は、1に変換して比較してください。値が偽の場合は、それを0に変換して比較します。
d。 1つがオブジェクトであり、もう1つが数値または文字列である場合、オブジェクトをベースタイプの値に変換してから比較します。オブジェクトを基本タイプに変換し、そのtoStringまたはValueofメソッドを使用します。 JS Coreビルトインクラスは、ToStringの前にValueofを試みます。例外は日付です。これは、ToString変換を使用します。非jsコアオブジェクト、たとえば(もっと面倒だ、私はあまり理解していない)
e。他の組み合わせは[不平等]です。
式値の表現値
null == undefinedtruetrue == 1true
「nan」== nanfalse $ null == 0false
false == 0truenan!= nantrue
要するに、「==」には等しい値のみが必要です。 「===」では、値とタイプが等しいことが必要です。
情報は、JavaScript Advanced Programmingからのもので、整理され、後で更新されました