Object.is()===

どのように2つの変数が同じであるかを決定するために、質問をする面接に記載されている面がありましたか?

ES6前に、我々は2つの変数が等しいかどうかを判断するために===使用します。ES6は、2つの変数を比較する方法Object.is(VAL1、VAL2)を追加します。だから何それとの間に2つの違いがあります

Object.is ECMA仕様()は、次の手順を実行します。

/ * Object.is(X、Y)
。1、タイプ(X)はタイプ(Y)、リターン偽と異なる場合。//比較タイプ、異なるfalseを返します。X typeof演算/ Y 
2、もしタイプ(X)ナンバー、次いで
  A、もしXおよびY IS ISのNaN NaNに、に等しい// NaNを有する真。NaNに戻り
  、B、xが0であり、yは場合 -0、リターン偽// + -0 0とせずに等しく
  xがある場合、C -0およびyは 0であり、リターン偽// - 0 0と等しくない
  Xは同じ番号である場合、D、 Yとして値は、trueを返します。 //数値型、異なる値に等しくない
  E、偽に戻る。
3、復路sameValueNonNumber(X、Y)。
* / 

/ * sameValueNonNumber(X、Y)
1、アサート:タイプ(X)X //数ではありません。ない番号
2、アサート:.タイプ(xは )タイプ(Y)//同じであるxおよびy同じ種類
タイプ(X)がされた場合、3不定、// trueを返すtypeof演算xが定義されていない場合には、Yはです。未定義、両方が等しいです 
4、タイプ(X)の場合にヌルである、// typeof演算X trueを返すヌルであり、YはNullであります、両者は等しいです
5、もしタイプ(X)は 、次に//文字列、 文字型、同じ値に等しい
  場合、xおよびyはまったく同じであるコード単位(同じ長さと対応するインデックスに同一のコード単位)の配列、真を返し、そうでない場合、 。偽に戻る
。6、//その後、同じ値に等しいタイプ(X)は、ブール、ブール値である場合に
  XとYの両方が、真または偽にtrueに戻り両方である場合;.、それ以外の場合はfalseに戻る
。7は、タイプ(X)のシンボルである場合、次に//シンボルタイプは、同じ値に等しく、
  XとYの両方が同じ値シンボルである場合、trueに戻り;. falseにそうでない場合、戻り
.. 8、X及びYは、偽の真そうでない場合、リターンへ戻り、同じオブジェクトの値である場合。//オブジェクトタイプ、同じオブジェクトに等しいです
* /

  

次のよう===演算子は、指定されました:

/ * 
1、もしタイプ(X)のタイプ(Y)、リターン偽と異なっています。
2、もしタイプ(X)の数、次に
  、xがNaNで、戻り偽である場合。
  B、YがNaN、リターンfalseの場合。
  xがyと同じ数の値である場合cは、trueを返します。
  D、xが0でyが-0、trueを返した場合。
  xが-0かつyが0である場合はE、trueを返します。
  F、リターンはfalse。
図3に示すように、リターンSameValueNonNumber(X、Y)。
* /

  

===とObject.is()の主な違いがNaN、+ 0、-Oこれらの特別なデジタルタイプ。それは、これらの値を決定する必要がある場合は、Object.isを()を選択することができ、他の例では、まだ推奨===

 

おすすめ

転載: www.cnblogs.com/Jamie1032797633/p/11839402.html