我对Java相当陌生,我想知道为什么'1'== true返回true,而'2'== true返回false。出于Java的背景,JavaScript中的类型强制已经很难掌握
答案 0 :(得分:2)
我的答案基于this table。
在您的示例中,操作数A为字符串,操作数B为布尔值。因此,然后对它们两者都调用ToNumber
并比较它们是否具有严格的(===
)相等性。
ToNumber('2') === 2
,但ToNumber(true) === 1
,所以两者不相等。
有关实现的更深入的解释是here。
答案 1 :(得分:0)
基本上,它可以归结为Javascript中的真实值和虚假值。
因为您的比较是使用==完成的,所以这基本上意味着只进行值比较。
在Javascript中,true等于1,就像false等于0一样。同样,鉴于您使用==而不是===的事实,它与1 =='1'相同,但1!=='1'。