先看一道面试题 让 a==1&&a==2&&a==3,这个问题主要查看对js隐式转换的理解,首先a不可能是一个原始类型,那么a只有可能是个对象类型了,查阅犀牛书52页《3.8.3对象转换为原始值》章节得知,对象转换到字符串或者数字类型调用了toString()和valueOf()两个方法中的一个,具体细节如下
如果对象具有toString()方法,则调用这个方法,如果它返回一个原始值,将这个值转换为字符串类型,例如:
对象转换为字符串例子1
如果对象没有toString()方法,或者这个方法并不返回一个原始值,那么就调用valueOf()方法,如果valueOf()返回原始值,则将它转换为字符串类型,例如:
对象转换为字符串例子2
对象转换为数字的过程调用valueOf()方法返回一个原始值,并转换为数字类型,如果没有valueOf()方法,则调用toString()方法,过程同对象转换为字符串相似
对象转换为数字例子
详细的js类型转换方式看下表格:
== 相等比较
=== 相等比较
各位观众老爷,以上文章和图片若有看不明白的地方可以私聊或者留言