{} == {}和{} === {}都是fasle

发布时间:2025-05-15 02:39

亚洲的京都和东京都是体验和服和茶道的好地方 #生活知识# #旅行生活# #环球旅行#

{} == {}和{} === {}都是fasle

最新推荐文章于 2023-03-21 22:29:16 发布

又菜又爱玩__QAQ 于 2021-12-31 18:14:11 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

首先:我们先简单认识一下 == 和 ===

相等和不相等——先转换再比较 (==)

全等和不全等——仅比较而不转换 (===)

看个例子:

console.log(NaN == NaN); // false console.log(NaN === NaN); // false 12

NaN是一个值类型,同是也是一个数值.意思是Not A Number,这个都知道是什么意思.值比较特殊,特殊在于NaN是一个数值,是一个与任何数值都不相等的数值.在javascript中我们通过typeof (NaN)看出,NaN它是一个number类型。但是,它不是一个确切的数值。我们可以将它看成是除数字值以外的任意值,而两个不确定的任意值是不相等的,所以NaN == NaN的返回值是false。

再一个例子:

console.log( [] == ![] ) // true 1

先将等号右边化简

[] == ![] // => [] == !Boolean([]) // => [] == !true // => [] == false 1234

等号两边的类型不同,需要进行类型转换
一般对象与非对象比较时,先尝试使用 valueOf 转换,再尝试使用 toString 转换

// => [].valueOf() == false // [] 的 valueOf 方法返回对象本身,仍然是一个引用值,所以尝试使用 toString 转换 // => [].toString() == false // => ""==false 1234

看{} == {}

console.log({} == {}); // false // {}.toString() -> [object,Object] -> 是 == 所以要Number([object,Object]) -> NaN console.log({} === {}); // false 12345

原因是JavaScript内部实际上有两种不同的测试相等性的方法。像字符串和数字这样的原语是根据它们的值进行比较的,而像数组、日期和普通对象则是根据它们的引用进行比较的。这个引用比较基本上是检查给定的对象是否指向内存中的相同位置

网址:{} == {}和{} === {}都是fasle https://www.yuejiaxmz.com/news/view/971477

相关内容

python if是如何判断true或False的呢? is和== 有什么区别呢?
Android:Java语言字符串比较“==”形式和“equals()”形式的不同
input标签的type为select、radio、checkbox的使用
幼儿园厕所消毒记录表
生活和工作,都是相辅相成的!
婚姻的底层真相:无论和谁过,其实都是和自己过
黄磊说他和何炅都是《向往的生活》的投资人?是真的吗?
墙面漆和涂料的区别都是什么?墙面漆和涂料的优点?
都是不锈钢,201和304厨具材料区别在哪
CarLife和CarPlay都是车载互联系统,有什么区别?

随便看看