就是如果在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]==1true[1,2]=="1,2"trueArray.prototype.toString=function(){returnthis.join("")}[1,2]=="1,2"false[1,2]=="12"true[1,2]==12trueArray.prototype.toString=function(){return10}[1,2]==10true[1,2,2]==10true[9]==9falseArray.prototype.valueOf=function(){return11}[1,2]==11true[1,2]==10false
添加回答
举报
0/150
提交
取消