2011-08-21 58 views
-2

可能重复:
Why does (0 < 5 <3) return true?这是怎么回事?

为什么这是真的?:

console.log(100 < 210 < 200); // outputs true

+0

看到:[http://meta.stackexchange.com/questions/92074/what-c​​an-i-do-when-越来越-IT-不 - 不见面,我们的质量,标准] –

回答

3

这相当于:

console.log((100 < 210) < 200); 

这相当于:

console.log(true < 200); 

而这个计算结果为true因为使用运营商如<时,true被视为好像它是一个1

因此,下面将评估为false

console.log(true < 0) 
2

100 < 210 < 200相当于(100 < 210) < 200 wh ich是true < 200这是1 < 200这是true

最后一点(true变成1)可能有点令人惊讶。这是JavaScript如何执行关系操作(规范的Section 11.8.5)的结果,其中说除了其他事项之外,如果关系在非数字(nullundefined以外)和数字之间,则将非数字转换为数,以及true为数字结果1转换(规范的Section 9.3。)