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

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

哆啦的时光机

不是,是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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript