首先,为了完整性:
('0' ? 'a' : 'b')是
'a'的,因为
'0'是一个非空字符串,这始终计算结果为
true:
字符串:如果参数为空字符串(其长度为零),则结果为 false; 否则为 false 。否则结果为 true 。
现在到
'0' == true。
这里将进行两次类型转换。我们可以在规范的第11.9.3节“抽象平等比较算法”中遵循这一要求。
操作数表示为
x和
y(
x == y)。
在我们的例子中,
x是一个字符串(
'0')和
y一个布尔值(
true)。因此,执行步骤7:
如果Type(y)为Boolean,则返回比较结果x == ToNumber(y)。
将布尔值转换为数字时,将进行以下转换:
布尔值:如果参数为 true, 则结果为 1 。如果参数为 false, 则结果为 +0 。
现在我们有
'0' == 1
符合步骤5中的条件:
如果Type(x)为String,Type(y)为Number,则返回比较结果ToNumber(x)== y。
如何将字符串转换为数字更为复杂,但是当然也可以在规范中找到。
所以最后的比较是
0 == 1
这是
false(步骤1. a。vi。)



