每天做个总结吧,坚持就是胜利!
/**
@date 2021-06-04
@description 详解Object.is()函数
*/
壹(序)
Object.is()函数用于判断两个值是否相等。 判断值相等有以下三种方式:
- 相等
==; - 全等
===; Object.is();
贰(区别)
- 使用
==时会进行隐式转换,比如'1' == 1,会先将字符串'1'转换为数字1,再进行比较,隐式转换的规则下次单独总结; - 使用
===时先判断类型,如果是不同类型直接返回false,相同类型再进行比较;其中NaN === NaN返回false,0 === -0返回true; Object.is()与===方法类似,但是NaN === NaN返回true,0 === -0返回false;
叁(使用)
console.log(Object.is(1, 1)); // true
console.log(Object.is('123', '123')); // true
console.log(Object.is(NaN, NaN)); // true
console.log(Object.is(0, -0)); // false
肆(手写实现)
手写实现Object.is()
const myIs = (val1, val2) => {
if (Number.isNaN(val1) && Number.isNaN(val2)) {
return true;
}
if ((val1 === 0 && val2 === -0) || (val1 === -0 && val2 === 0)) {
return false;
}
return val1 === val2;
};
console.log(myIs(1, 1)); // true
console.log(myIs(true, true)); // true
console.log(myIs('123', '123')); // true
console.log(myIs(NaN, NaN)); // true
console.log(myIs(0, -0)); // false
console.log(myIs(-0, 0)); // false