繁体   English   中英

在JavaScript中输入强制

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM