比较运算
对于比较运算来说,一个数据“被理解为/被转换为什么样的值”是很关键的。这涉及到JavaScript对类型转换的强制约定。例如,空字符串被转换为false的值,以及对象的valueOf()方法等。
而在使用“严格相等”时,会先比较数据的类型,因此这种等值的检测过程中不会发生类型转换。并且按照约定,JavaScript中的“-0 === 0”, 以及“NaN !== NaN”,于是ES6之后的版本设计了Object.is() 方法,处理类型“Object.is(-0, +0) === false” “Object.is(NaN, NaN) === true” 这样的运算逻辑。
当然,由于任何两个对象都是不等的,所以Object.is() 显然不能用于替换“对象的==或===运算”。因此,is() 通常用于值类型数据的检测。