为什么“true”== true在JavaScript中显示false?
 MDC描述==运算符如下 : 
如果两个操作数的types不同,JavaScript会转换操作数,然后进行严格的比较。 如果任一操作数是一个数字或一个布尔值,操作数将尽可能转换为数字。 否则,如果任一操作数是一个string,则另一个操作数将被转换为一个string(如果可能)。
 考虑到这一点,我会评估"true" == true ,如下所示: 
- 他们是同一types吗? 没有
- 操作数是数字还是布尔值? 是
-  我们可以转换成一个数字吗?  否 ( isNaN(Number("true")) // true)
- 操作数是string吗? 是
-  我们可以将另一个操作数转换为string吗?  是 ( String(true) === "true" // true)
 我已经结束了string"true"和"true" ,这应该评估为true ,但JavaScript显示错误。 
我错过了什么?
 因为"true"转换为NaN ,而true则转换为1 。 所以他们不同。 
 就像你所报道的,两者都被转换成数字,因为至less可以是true (见Erik Reppen的评论),然后进行比较。 
==比较运算符在Ecma 5中定义为
- 如果Type(x)是Number和Type(y)是String,则返回比较结果x == ToNumber(y)。
- 如果Type(x)是String而Type(y)是Number,
- 如果Type(x)是布尔型,则返回比较结果ToNumber(x)== y。
- 如果Type(y)是布尔型,则返回比较结果x == ToNumber(y)。
所以,“true”== true被js引擎解释为
- “true”== toNumber(true)
- “true”== 1
- toNumber(“true”)== 1
- NaN == 1
===> false
根据抽象平等比较algorithm
http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.3
 如果其中一个是一个布尔值,另一个不是,则布尔型转换为数字0或1.所以true == "true"为false。