知道javascript在需要时自动转换类型,例如“8”*“3”= 24;但是在比较两种不同类型的j时,它们首先转换为什么类型。
让我举个例子。
这里当字符串“true”与布尔值true进行比较时,其中一个必须转换为其他类型。这里的优点是什么,将“true”字符串转换为boolean true返回一个布尔对象,或者boolean true转换为“true”字符串。
在上面我猜真正的字符串被转换为布尔值true,这是使语句为false的对象,那么为什么不反过来在类型转换中有优势呢?
答案 0 :(得分:1)
见11.9.3 The Abstract Equality Comparison Algorithm。
基本上归结为: ==是自己的魔力;如果有的话,它赞成 ToNumber转换。此转换是等式运算符评估的结果。
"true" == true
"true" == 1 // by rule #7 - ToNumber(true)
0 == 1 // by rule #5 - ToNumber("true")
false // by rule #1c
在这种情况下,ToBoolean操作只是未使用,尽管在真实性很重要的其他情况下 - 例如使用逻辑布尔运算符或条件表达式。