这是因为等于运算符==确实键入了强制,这意味着解释器会在比较之前隐式尝试转换值。
但是,0 =='',我不明白为什么它返回true。可以解释一下吗?什么是0转换成?什么是“转换为真实的?”
答案 0 :(得分:3)
当抽象地比较字符串和数字时,无论顺序如何,string will be converted ToNumber()
进行比较:
4. If Type(x) is Number and Type(y) is String,
return the result of the comparison x == ToNumber(y).
5. If Type(x) is String and Type(y) is Number,
return the result of the comparison ToNumber(x) == y.
对于0 == ""
,ToNumber("")
会产生0
,这正是另一个值:
0 == "" // becomes...
0 == 0 // becomes...
true
注意:您可以使用internal-onlyToNumber()
查看Number()
constructor without new
如何处理不同的值:
console.log(Number(""))
// 0