为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 [1] == 1 的结果会是true

为什么 [1] == 1 的结果会是true

holdtom 2019-04-10 20:48:01
就是如果在console中写入[1]==1他返回的竟然是true让我很不解,一个数组和数字比较,他是怎么转化的呢?直接将数组转换成什么呢?对此,我又进行了如下的测试[2]==1false[2]==2true[1,3]==1false[1,3]==2false[1,3]==3false['a']=='a'true['a','b']=='a'false['a','b']=='ab'false总的来看,似乎是如果只有一个元素,那么就和这一个元素判断是否相等,如果多个就进行正常的判断,请问是这样么?另外对于这种情况的转化规则是什么?
查看完整描述

2 回答

?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

不是,是toString()
是先调用valueOf()但是默认的valueOf()返回的是对象,所以再去调用toString()
[1]==1
true
[1,2]=="1,2"
true
Array.prototype.toString=function(){returnthis.join("")}
[1,2]=="1,2"
false
[1,2]=="12"
true
[1,2]==12
true
Array.prototype.toString=function(){return10}
[1,2]==10
true
[1,2,2]==10
true
[9]==9
false
Array.prototype.valueOf=function(){return11}
[1,2]==11
true
[1,2]==10
false
                            
查看完整回答
反对 回复 2019-04-10
  • 2 回答
  • 0 关注
  • 391 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信