2015-12-08 60 views
0

为什么1=='true'是false?If 1 =='1'// true and 1 == true // true then why 1 =='true'// false

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

如果JavaScript仅比较==方案中的类型而不是类型。

+1

@ user1805928因为'真=“true'' ...!? – Biffen

+3

我真的不明白为什么这个问题被拒绝投票。海报问了一个有效的,而且很有教育意义的问题,这个问题在解决bug问题上会有很大的帮助。如果你认为这个问题很愚蠢或者显而易见,我鼓励他们给出一个答案并进行解释。 – AVAVT

+0

请看下面... http://stackoverflow.com/questions/359494/does-it-matter-which-equals-operator-vs-i-use-in-javascript-comparisons –

回答

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

+0

谢谢**乔希**,为宝贵的投入。 – user1805928

相关问题