ホームページ > 記事 > ウェブフロントエンド > jsにおける等価判定 ===, == と Object.is() の違い
JS を初めて使用する人は、その等価性の判断に混乱すると思います。次のコードを見てください。いくつ正解できますか?
NaN === NaN // false NaN == NaN // false Object.is(NaN, NaN) // true 0 == false // true 1 == true // true Number(null) === 0 // true null == 0 // false
Javascript には、厳密な等価、緩い等価、Object.is という 3 つの異なる値比較演算があります。今日情報を確認してまとめてみました。以下の内容が皆様のお役に立てれば幸いです。お願いします。間違いがある場合は、修正していただければ幸いです。
[関連コースの推奨事項: JavaScript ビデオ チュートリアル]
1.厳密等価 x === y 判定ロジック
1. x のデータ型が y のデータ型と異なる場合、false を返します;
2. x が数値の場合type
#● x は NaN、return false
#● y は NaN、return false#● x の値は y の値と等しい、return true
#x は 0、y は -0、true を返します
##● x は -0、y は 0、true を返します##● それ以外の場合は false
# を返します3. 他の型は SameValueNonNumber(x, y) を参照します。
#● アサーション: x, y は Number 型ではありません。#● アサーション: x、y は同じデータ型です。#x は未定義、y は未定義、true を返す;
#● x が null、y が null、true を返す;
#● x が文字列型である場合にのみ、 x と y の文字シーケンスがまったく同じ (長さが同じで、各位置の文字が同じ) は true を返し、それ以外の場合は false を返します。## ● x がブール型の場合、次の場合は true を返します。 x と y は両方とも true または false、それ以外の場合は false を返します ;
#● x がシンボル型の場合、x と y が同じシンボル値の場合は true を返し、それ以外の場合は false を返します; ● x、y が同じオブジェクト値の場合は true を返し、そうでない場合は false を返します;NaN === NaN // false undefined === undefined // true null === null // true undefined === null // false
2. 緩和等価 x == y
1. If x and y が同じ型の場合、x===y の結果を返します ;2. x が null、y が未定義の場合は、true を返します;3. x が未定義の場合、y null の場合、true を返します;4. x が数値で y が文字列の場合、x == ToNumber(y) を返します;
5. x が文字列であり、かつy が数値の場合は、ToNumber(x) == y;6. x がブール型の場合は、ToNumber(x)==y;##7 の結果を返します。 y が Boolean 型の場合、x==ToNumber(y);
8. x が String、Number、Symbol のいずれかで、Type(y) が Object の場合、x の結果を返します。 ==ToPrimitive(y)
9. Type(x) が Object で、Type (y) が String、Number、Symbol のいずれかの場合、ToPrimitive(x)==y
の結果を返します。10. その他は false を返します
12 == '0xc' // true, 0xc是16进制 12 == '12' // true 12 == '12c' // false, 说明ToNumber转换是用的Number()方法
注:
Number(null) === 0
But
null == 0 // false,
2.1 ToNumber は値を数値型に変換します
1. ブール型の場合、true は 1 を返し、false は 0 を返します;2. 数値の場合は、単純に渡されて返されます。3. null の場合は 04 を返します。未定義の場合は NaN を返します。#5. 文字列の場合、文字列に数字のみが含まれている場合は、 10 進数に変換します。有効な浮動小数点形式の場合は、対応する浮動小数点値に変換します。2 進数または 16 進数の場合は、対応する 10 進数に変換します。
6.オブジェクトの場合は、オブジェクトの valueOf() メソッドを呼び出して、前のルールに従って変換します。valueOf 戻り値が NaN の場合は、toString() メソッドを呼び出して、返された文字列を前のルールに従って変換します。 2.2 ToPrimitivetoPrimitive(A) A.toString() メソッドと A.valueOf() メソッドを呼び出して、パラメータ A をプリミティブ値 (Primitive) に変換します。
##JS のプリミティブ型は次のとおりです: Number、String、Boolean、Null、Unknown;さまざまな種類のオブジェクトの valueOf() メソッドの戻り値:Object戻り値
Array
#ブール値 | ブール値 |
---|---|
保存された時刻は 1970 年 1 月 1 日からです。 UTC 午前 0 時から始まるミリ秒数 | |
関数自体 | |
数値 | #オブジェクト |
#String | |
をオーバーライドできます。 |
以上がjsにおける等価判定 ===, == と Object.is() の違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。