在JavaScript中输入强制,转换是如何完成的?

时间:2014-05-06 20:54:40

标签: javascript

这是因为等于运算符==确实键入了强制,这意味着解释器会在比较之前隐式尝试转换值。

Looked into this

但是,0 =='',我不明白为什么它返回true。可以解释一下吗?什么是0转换成?什么是“转换为真实的?”

1 个答案:

答案 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