【JavaScript】[] == [] 与 [] === [] 返回 false 的原因

查看:91
本文介绍了【JavaScript】[] == [] 与 [] === [] 返回 false 的原因的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

[] == [];
[] === [];

都返回false


[]===[]
原因猜测是
相同类型的非原始类型,判断他们的指向是否相同,这里两个 [] 各自创建了一个新的底层数组 所以返回不同


[] == []
返回 false 我无法理解
相同类型直接判断值的话应该返回 true

而按照 == 的隐式转换原则
[] 会调用 toString() 方法,得到 ''空字符串。
两边的 [] 都会得到 '' 然后再转换为数字 0
这样的话 不该返回 true 么

解决方案

如果两个操作数都是对象,则比较它们是不是同一个对象。如果两个操作数都指向同一个对象,
则相等操作符返回true;否则,返回false。
直接从书上摘下来的。。。
[]==[]
两边两个数组是独立的两个对象,内存地址不同,所以结果是false。

这篇关于【JavaScript】[] == [] 与 [] === [] 返回 false 的原因的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆