我是JavaScript的新手,我想知道为什么'1'== true返回true true,但'2'== true返回false。来自Java背景,JavaScript中的类型强制很难掌握
我的答案基于此表。
在您的示例中,操作数A是字符串,并且操作数B为布尔值。因此,它在这两个上都调用ToNumber
,并将它们比较严格( ===
(均等。
ToNumber('2') === 2
,但是 ToNumber(true) === 1
,所以两个不相等。
在这里对实现的更深入的解释。
基本上归结为javaScript中的真相和虚假的值。
由于您的比较是用==完成的,这基本上意味着值比较。
在JavaScript中,True等于值等于1,就像False等于值等于值。另外,鉴于您使用==而不是===,它与1 =='1'但1!=='1'。