要求设计一个函数,接受两个值,判断y相对x是否有变化,不考虑引用类型

1
2
3
const hasChanged = (x, y)=> {
return x!==y
}

但实际上没有这么简单

1
2
3
console.log(-0 === 0)  // -> true
console.log(1/0 === 1/-0) // -> false (Infinity === -Infinity)
console.log(NaN === NaN) // -> false

所以这些特殊值也需要检测

1
2
3
4
5
6
7
8
9
const hasChanged = (x, y)=> {
if(x === y) {
// 检测-0和0
return x !== 0 || 1 / x === 1 / y
} else {
// 检测NaN
return x !== x && y !== y
}
}