どのように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を()を選択することができ、他の例では、まだ推奨===