前端面试:js中==和===以及 Object.is 的区别及详细实例

参考回答:

(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

标签:区别   时会   示例   字符串   实例   对象   规则   两个   类型   方式   数字   详细

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top