JavaScriptオブジェクトの識別及び等しい判定

1328 ワード

1.コンピュータシステムwindows 10の専門版2.開発の過程で、私達はよくjsを使って判定します.次に私が出会った問題と簡単なまとめを共有します.3.ECMAScript 6の前には、たとえ==操作子でも無力な場合があります.3-1.これらは==が予想に合致する場合*
console.log(true === 1); // false
console.log({}==={}); //false
console.log("2"===2); //false
3-2.これらの状況はJavaScriptエンジンによって異なりますが、まだ同等とされています.
console.log(+0===-0);  // false
console.log(+0===0);  //true
console.log(-0===0);  true
3-3.NaNの等しい性を決定するには、極めて嫌なisNaN()を使用しなければならない.
console.log(NaN===NaN); //false
console.log(isNaN(NaN)); //true
3-4.このような状況を改善するために、ECMAScript 6仕様にObject.is()が追加されました.この方法は==に似ていますが、上記境界の状況も考慮しました.この方法は二つのパラメータを受け入れる必要があります.
console.log(Object.is(true,1));  // false
console.log(Object.is({},{}));  // false
consoe.log(Object.is("2",2)); // false
3-5.正しい0\-0\+0が等しい/判定がない
console.log(Object.is(+0,-0));  //false
console.log(Object.is(+0,0));  // true
console.log(Object.is(-0,0));  //false
3-6.正しいNaN等しい判定
console.log(Object.is(NaN,NaN));  //true
3-7.2つ以上の値を検査し、再帰的に同等性の伝達を利用すればよい.
function recursivelyCheckEqual(x,...rest){
      return Object.is(x,rest[0]) && (rest.length<2 || recursivelyCheckEqual(...rest));
     }
4.今期のシェアはここで終わりました.ニコニコしていますか?あなたを助けたいです.一緒にピークに向かって頑張りましょう.