如果 1=='1' //true 和 1==true //true 那么为什么 1=='true' //false

If 1=='1' //true and 1==true //true then why 1=='true' //false

为什么 1=='true' 是假的?

如果1=='1'为真且1==true为真。

如果 JavaScript 只比较值而不比较 == 场景中的类型。

这是因为类型强制。

实际上,这就是 JavaScript 在使用 == 运算符时试图代表您做的事情。

1 == Number('true'); // 1 == NaN

1 == Number('1'); // 1 == 1

1 == Number(true); // 1 == 1

当使用 == 比较两个不同的类型时,JavaScript 试图将它们强制转换为相同的类型进行比较。

您可以在此处阅读有关该算法的更多信息:http://webreflection.blogspot.com/2010/10/javascript-coercion-demystified.html