1、首先是 "true"==true的结果为false
2、为什么? 在转化不同数据类型时,相等或不等遵循以下规则:
(1)如果有一个操作数是布尔值,则在比较相等之前先将布尔值转化为数值,即:true 为 1 ,false 为 0
(2)如果有一个操作数是字符串,另一个操作数是数值,则在比较相等之前先将字符串转化为数值,即:"3" 为 3 ,"sfehf" 为 NaN
(3)如果有一个操作数是对象 ,另一个不是对象,则调用对象的valueOf()方法(valueOf() 方法可返回 Boolean 对象的原始值),用得到的基本类型值按照前面的规则进行比较。
3、因此,按照规则(1)和(2),转化结果为:NaN == 1 ,结果为false
更多关于 == 以及 === 的详细请参考:
https://segmentfault.com/a/1190000000650129