为什么javaScript不允许使用双重比较?

时间:2016-05-26 18:01:35

标签: javascript comparison-operators

为什么javaScript不允许使用双重比较?例如,在64 < str.charCodeAt(i) && str.charCodeAt(i)<=77中,为什么我不能简单地说64 < str.charCodeAt(i)<=77

2 个答案:

答案 0 :(得分:1)

你可以,但它不会做你想象的那样。

64 < str.charCodeAt(i)<=77

被解析为

(64 < str.charCodeAt(i)) <= 77

所以它会执行<比较,得到一个布尔结果。然后它会将该布尔值转换为数字(零或1)并执行<=测试。

关于为什么这样的问题,很可能C语言家族的惯例(在设计JavaScript时已经20年了)似乎适合并且很多程序员都很熟悉。 C的工作方式相同。 Java不是因为它有一个真正的布尔类型,并且它不喜欢大多数隐式类型转换,所以整个事情在该上下文中看起来像语法错误。

答案 1 :(得分:0)

此语法有效,但不能达到预期效果。

True == 1和False == 0都是真的。因此true > x为真,其中x是小于1的任何数字,false > x为真,其中x是小于0的任何数字。

所以&#34;双重比较&#34;像:

1 < 2 < 3

评估为:

true < 3

大致相当于:

1 < 3

在这种情况下是正确的。