javascript比较运算符

时间:2014-04-01 19:16:49

标签: javascript python comparison operators

我来自python背景,在做了一个javascript项目

之后遇到了一个问题

0< 5< 3

输出为true 我的猜测是它运行第一个操作符并完全忽略第二个

和python会呈现为假。

我并不担心如何让这个工作起作用,但奇怪的是,它不在文件中而只是暗示做(0< x&& x< 3< 3)而不是保持简单

猜猜我的问题是,如果有人能够回答

,为什么会这样呢?

3 个答案:

答案 0 :(得分:5)

在JavaScript中,这个:

0 < 5 < 3

的评估如下:

(0 < 5) < 3

转换为:

true < 3

进一步翻译为此(因为true在数字上下文中是1):

1 < 3

这是真的。


然而,Python的设计不同。正如文件here所述,它解释了这一点:

0 < 5 < 3

等同于:

0 < 5 and 5 < 3

上述表达可以进一步转化为:

True and False

这是假的。

答案 1 :(得分:2)

这是一步一步的评估。将数字和布尔值与<进行比较时,true变为1,0变为false。

0 < 5 < 3 // =>
true < 3 // =>
Number(true) < 3 // =>
1 < 3 // =>
true

请参阅spec 11.8.5规则3,其中介绍了ToNumber投射。

  

3)如果不是Type(px)都是String而Type(py)是String,那么

     

a)设nx为调用ToNumber(px)的结果。因为px和py是原始的          价值评估顺序并不重要。

     

b)让ny成为调用ToNumber(py)的结果。

答案 2 :(得分:0)

在JavaScript中,Relational operators从左到右执行:

0 < 5

是真的,即1,所以

0 < 5 < 3

翻译为:

1 < 3

这是真的。

另一方面,Python中的comparison operations具有相同的优先级。

  

与C不同,像a < b < c这样的表达式也有解释   在数学中是常规的。