(1) ==主要存在:强制转换成
number,null==undefined
" "==0 //true
"0"==0 //true
" " !="0" //true
123=="123" //true
null==undefined //true
(2)Object.js
主要的区别就是
+0!=-0 而 NaN==NaN
(相对比===和==的改进)
== 和 === 这两个比较运算符在 JavaScript 中都是用于比较两个值的相等性,但它们的比较方式是不同的。
== 比较运算符会进行类型转换,如果两个值的类型不同时会将它们转换为相同类型后再进行比较。例如:
"1" == 1 // true,因为 "1" 会被转换为数字类型 1
null == undefined // true,因为它们都表示空值
=== 严格比较运算符不会进行类型转换,只有当两个值的类型相同时才会进行比较。例如:
"1" === 1 // false,因为它们的类型不同
null === undefined // false,因为它们的类型不同
Object.is 是 ES6 新增的方法,用于判断两个值是否严格相等,它的比较规则如下:
下面是一些示例:
Object.is(1, 1) // true
Object.is("1", 1) // false
Object.is(null, null) // true
Object.is(undefined, null) // false
Object.is(true, true) // true
Object.is(false, false) // true
Object.is(NaN, NaN) // true
Object.is(+0, -0) // false
Object.is({}, {}) // false
需要注意的是,Object.is 和 === 再处理 NaN 和 +0/-0 时的结果是不同的:
NaN === NaN // false
Object.is(NaN, NaN) // true
+0 === -0 // true
Object.is(+0, -0) // false
再举几个例子来说明三者的区别:
"" == false // true,因为""会被转换为false
"" === false // false,因为它们的类型不同
0 == false // true,因为0会被转换为false
0 === false // false,因为它们的类型不同
[] == false // true,因为[]会被转换为false
[] === false // false,因为它们的类型不同
Object.is("1", "1") // true
Object.is({}, {}) // false
Object.is([], []) // false
可以看出,== 和 === 在类型转换和比较规则上的差别很容易产生混淆,而 Object.is 的比较规则更严格、更明确,避免了类型转换和精度问题带来的影响,因此在使用时需要根据实际情况选择合适的比较方式。
#挑战30天在头条写日记#
页面更新:2024-03-12
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号