s判断两个值是否完全相等 ES6写法及ES5封装实现ES6相同功能

/**
判断两个值是否完全相同 Object.is先进行类型比较,后进行值比较
它比===更强大,===不支持NaN的比较,它支持 ===不支持正负的比较,它支持
**/
function identity1(val1, val2) {
return Object.is(val1,val2)
}

console.log(identity1("s","s"));

/**
* 判断是否为正数
**/
function positiveNumberTest(num){
var t=/^\d+(\.\d+)?$/;
return t.test(num)
}

/**
判断是否为正0
1/正0必定为Infinity
1/负0必定为-Infinity
**/
function isNegativeZero(num) {
return ((1 / num)===Infinity)
}

/**
* es5实现比较完全相同的比较函数
*/
function idetity2(val1,val2) {
//判断va1l和val2是否为NaN
if(isNaN(val1)&&isNaN(val2)){
return true
//va1l和val2是否同为number
}else if(typeof val1=="number"&&typeof val2=="number"){
if(val1===0){
return isNegativeZero(val1)===isNegativeZero(val2)
}else {
//判断是否同为正数或同为负数
if(positiveNumberTest(val1)===positiveNumberTest(val2)){
//将两个数字强制转换为正数比较数值
return Math.abs(val1)===Math.abs(val2)
}else {
return false
}
}
//val1和val2是否同为string 
}else if(typeof val1=="string"&&typeof val2=="string"){
return val1===val2
//val1和val2是否数据类型不一致 
}else {
return false
}
}

console.log(idetity2(0,-0));

猜你喜欢

转载自blog.csdn.net/qq_38603437/article/details/89512040
今日推荐