为什么javaScript不允许使用双重比较?例如,在64 < str.charCodeAt(i) && str.charCodeAt(i)<=77
中,为什么我不能简单地说64 < str.charCodeAt(i)<=77
。
答案 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
在这种情况下是正确的。