这是一个javascript比较:
2 == true //false
据说,返回false的原因是因为比较将true
转换为Number
数据类型,结果为1:
console.info(Number(true)) // 1
我的困惑是,为什么比较不会将数字2
转换为Boolean
数据类型
console.info(Boolean(2)) // true
并且2 == true
结果可能是true
?
答案 0 :(得分:3)
我在这里找到了文档:
Comparison Operators,其中说:
如果两个操作数的类型不同,则JavaScript会转换 操作数然后应用严格的比较。如果任一操作数是一个数字 或者布尔值,如果可能,操作数将转换为数字;其他 如果任一操作数是一个字符串,则另一个操作数转换为a 如果可能的话。如果两个操作数都是对象,那么JavaScript 比较操作数引用时相等的内部引用 内存中的同一个对象。
答案 1 :(得分:0)
==进行隐式转换比较。在这种情况下,2
是数字,true
是布尔值。转换规则是"在将数字与布尔值进行比较时,布尔值将转换为数字"因此
true转换为1
和2 == 1将为false。
//similarly,
2 == false; //false
因为false将转换为0,而且2也不能等于0.
但是,1 == true。出于同样的原因,true将被转换为1和1 == 1