在ES6标准中,JavaScript中新增了Object.is()方法,用于检测两个对象是否相等。随着ES12的推出,Object.is()也进行了一些变化,让人们对其使用存在了一些疑惑,本文旨在解决这些疑惑。
1. Object.is()用法
Object.is()方法用于判断两个对象是否相等、是否相同。语法如下:
Object.is(value1, value2)
其中,value1和value2为两个要比较的值,可以是任何类型。如果value1和value2相同,则返回true,否则返回false。
2. Object.is()和“===”的区别
在ES6之前,我们一般使用===
熟悉来比较两个变量是否相等,但是这种比较存在一些缺陷。如:
NaN === NaN
返回false0 === -0
返回true
而Object.is()方法解决了这些问题,即:
Object.is(NaN, NaN)
返回trueObject.is(0, -0)
返回false
3. Object.is()和Object.isnt()的区别
在ES12中,除了Object.is()方法外,还新增了Object.isnt()方法,用于判断两个变量是否不相等、不相同。使用方法如下:
Object.isnt(value1, value2)
区别在于返回值,Object.isnt(value1, value2)
的返回值等同于!Object.is(value1, value2)
4. Object.is()用法示例
以下是一些使用Object.is()方法的示例代码:
// javascriptcn.com 代码示例 // 判断两个字符串是否相同 var str1 = "hello"; var str2 = "he" + "llo"; console.log(Object.is(str1, str2)); // true // 判断两个对象是否相同 var obj1 = {a: 1, b: 2}; var obj2 = {a: 1, b: 2}; console.log(Object.is(obj1, obj2)); // false // 判断两个数字是否相同 console.log(Object.is(2, 2)); // true console.log(Object.is(2, "2")); // false console.log(Object.is(0, -0)); // false console.log(Object.is(NaN, NaN)); // true
5. 总结
使用Object.is()方法判断两个值是否相等、相同,是一种更为精确的方法,避免了使用===
操作符可能产生的错误。同时,ES12还新增了Object.isnt()方法,用于判断两个变量是否不相等,它的返回值等同于!Object.is(value1, value2)
。在实际项目中,合理利用这两个方法可以提高代码的质量。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6544bf527d4982a6ebe94c56