【JavaScript】[] == [] 与 [] === [] 返回 false 的原因
本文介绍了【JavaScript】[] == [] 与 [] === [] 返回 false 的原因的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
[] == [];
[] === [];
都返回false
[]===[]
原因猜测是
相同类型的非原始类型,判断他们的指向是否相同,这里两个 []
各自创建了一个新的底层数组 所以返回不同
[] == []
返回 false
我无法理解
相同类型直接判断值的话应该返回 true
而按照 ==
的隐式转换原则[]
会调用 toString()
方法,得到 ''
空字符串。
两边的 []
都会得到 ''
然后再转换为数字 0
这样的话 不该返回 true 么
解决方案
如果两个操作数都是对象,则比较它们是不是同一个对象。如果两个操作数都指向同一个对象,
则相等操作符返回true;否则,返回false。
直接从书上摘下来的。。。
[]==[]
两边两个数组是独立的两个对象,内存地址不同,所以结果是false。
这篇关于【JavaScript】[] == [] 与 [] === [] 返回 false 的原因的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文