[英]type coercion in JavaScript
我猜我有点知道JavaScript中==和===之间的区别,因为比较时==会强制输入类型,而===不会。 我了解以下代码将是正确的:
console.log(true == "1");
但是当下面的代码为假时?
console.log(true == "true");
当您将布尔值与另一个类型的值进行松散比较时,布尔值被强制转换为数字。
当您比较数字和字符串时,该字符串将被强制转换为数字。
有关完整规则,请参见“抽象平等比较算法”
过程是这样的:
true == "true" ─┐
├─ Number(true) // 1
1 == "true" ─┤
├─ Number("true") // NaN
1 == NaN ─┤
├─ // Comparing with `NaN` always produces `false`
false ─┘
由于一个操作数是数字,因此布尔操作数将转换为数字值,而字符串将转换为数字值。
我们最终得到1 == NaN。 如果两个操作数中的任何一个为NaN,则equal操作符始终返回false。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.