题目很简单
如何使
a == 1 && a == 2 && a == 3
这个逻辑成立?
这是一个JavaScript类型隐式转换的问题
这是因为JavaScript中的相等运算符==
和===
在比较对象时,会调用对象的valueOf()
方法, 如果没有valueOf()
方法,则直接将a
转换为字符串进行比较,调用toString()
方法 ,然后将结果转换为字符串进行比较。
在以上代码中,a
是一个对象,它的valueOf()
方法会返回一个字符串,然后==
运算符会将这个字符串转换为数字进行比较。
因此,在第一次比较时,a
的valueOf()
方法会返回"1"
,然后==
运算符会将这个字符串转换为数字1进行比较,所以第一次比较的结果为true
。
在第二次比较时,a
的valueOf()
方法会返回"2"
,然后==
运算符会将这个字符串转换为数字2进行比较,所以第二次比较的结果为true
。
javascript的类型转换还记得多少?
true