为什么'1'== true返回true,而'2'== true在Javascript中返回false

时间:2019-07-29 16:42:41

标签: javascript

我对Java相当陌生,我想知道为什么'1'== true返回true,而'2'== true返回false。出于Java的背景,JavaScript中的类型强制已经很难掌握

2 个答案:

答案 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'。