0
A
回答
1
因为编程不是数学。
1 < 2
返回布尔值true
然后将其隐式转换为数字1
,这确实少于三个。第二个例子中发生的情况相同,但1 > 1
返回false
。
2
Javascript不支持expression like 0 < x < 10
。因为<
和>
运算符具有相同的优先级并从左到右应用,实际上,正在评估的是(1 < 2) < 3
。
由于表达(1 < 2)
评估为真时,第二<
操作,实际上,评估是否true
小于或等于3
。
1 < 2 < 3
(1 < 2) < 3
true < 3
true
你的第二个例子可以通过应用相同的过程来理解:
3 > 2 > 1
(3 > 2) > 1
true > 1
false
至于为什么true < 3
计算结果为真,true > 1
计算结果为假,答案是更复杂一点,并有在Javascript中使用宽松的输入系统。总之,与数字相比,javascript的true
值的计算结果为1,其'false
值的计算结果为0.
本章介绍过程应用程序的替换方法相当有帮助。 https://mitpress.mit.edu/sicp/full-text/sicp/book/node10.html
+1
请注意,JavaScript(以及许多其他语言)的行为部分是因为它们来自C,它没有布尔类型。通常在C编程中(在官方布尔头文件之前),会使用预处理器指令来定义'FALSE = 0'和'TRUE = 1'。 –
相关问题
- 1. JavaScript的比较运算符
- 2. 比较运算符在javascript中的数组上比较什么?
- 3. javascript的字符串比较和比较运算符不工作?
- 4. 比较运算符
- 5. 比较运算符
- 6. 比较运算符
- 7. JavaScript比较运算符不工作
- 8. Javascript比较运算符“不大”
- 9. Javascript:使用逻辑运算符与比较运算符
- 10. 使用比较运算符比较postgres中的字符串?
- 11. 重载比较运算符
- 12. 多个比较运算符
- 13. PowerShell比较运算符
- 14. TypeTag和比较运算符?
- 15. 比较运算符!==对0
- 16. 比较位运算符
- 17. Python比较运算符
- 18. 比较运算符问题
- 19. 逻辑比较运算符
- 20. SQL比较运算符
- 21. Ruby比较运算符? ==与===
- 22. 运算符重载“运算符T *()”产生比较运算符?
- 23. java中的比较运算符对象
- 24. PHP中的动态比较运算符
- 25. C#中的比较运算符
- 26. Python中的'反转'比较运算符
- 27. 泛型堆中的比较运算符
- 28. for循环中的比较运算符
- 29. weak_ptr中的比较运算符C++
- 30. C字符串的比较运算符
因为检查返回一个布尔值。然后,布尔值被隐式转换为一个数字,用于下一次比较。 –