为什么1=='true'
为假?
如果1=='1'
为真且1==true
为真。
如果JavaScript仅比较==
方案中的值而不是类型。
答案 0 :(得分:11)
这是因为类型强制。
实际上,这是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