爲什麼javaScript不允許使用雙重比較?例如,在64 < str.charCodeAt(i) && str.charCodeAt(i)<=77
中,爲什麼我不能簡單地說64 < str.charCodeAt(i)<=77
。爲什麼javaScript不允許使用雙重比較?
-1
A
回答
1
你可以,但它不會做你認爲它會。
64 < str.charCodeAt(i)<=77
被解析爲
(64 < str.charCodeAt(i)) <= 77
所以它會執行<
比較,得到一個布爾結果。然後它會將該布爾值轉換爲數字(零或1)並執行<=
測試。
至於爲什麼這樣的問題,很可能C語言家族的約定(當JavaScript被設計時已經有20年了)似乎對於許多程序員來說是合適的和熟悉的。 C以同樣的方式工作。 Java並不是因爲它有一個真正的布爾類型,並且它不喜歡大多數隱式類型轉換,所以整個事情在這種情況下看起來像是一個語法錯誤。
0
這種語法的工作原理,但不會做你所期望的。
True == 1和False == 0都是真的。所以true > x
爲真,其中x爲小於1的任何數目,並且其中,x是大於0
所以「雙比較」等小任何數量false > x
爲真:
1 < 2 < 3
的計算結果爲:
true < 3
其大致等同於:
1 < 3
這在這種情況下是正確的。
相關問題
- 1. 爲什麼PHP不允許比較?
- 2. 爲什麼Swift允許雙選項?
- 3. 爲什麼C++不允許使用typeof?
- 4. 重載比較雙以允許數字錯誤
- 5. Javascript - 爲什麼使用雙重否定
- 6. 爲什麼Python允許比較可召集和數字?
- 7. 雙重比較
- 8. %爲什麼不允許
- 9. 爲什麼Django不允許使用上下文重定向
- 10. 爲什麼我的雙重比較失敗C++
- 11. Xcode - 雙重比較
- 12. Java雙重比較
- 13. 爲什麼C#允許重寫異步?
- 14. 爲什麼`dict_display`允許重複鍵?
- 15. 爲什麼@OneToOne允許重複關聯?
- 16. C++ :: toupper不允許平等比較嗎?
- 17. 不允許使用Javascript
- 18. Ajax Json不會允許雙重結果
- 19. 爲什麼JavaScript比較錯誤?
- 20. 爲什麼Java中不允許用Foo(Object [])重載Foo(Object ...)?
- 21. 爲什麼使用Javascript允許算術非數字
- 22. PHP比較不起作用..爲什麼?
- 23. 爲什麼setmaxage不允許比~5mins更長的時間
- 24. 爲什麼header允許跨域不允許使用echo來輸出變量值?
- 25. NSIndexPath永遠不能爲零,不允許比較
- 26. 類型'[NSManagedObject]'的值永遠不能爲零,不允許比較
- 27. 類型'NSPersistentStore'的值永遠不能爲零,不允許比較
- 28. 爲什麼java允許NPE
- 29. 允許使用Javascript
- 30. C++雙重比較的奇怪行爲
答案可能很簡單:「因爲語言規範不支持」。你在問一個哲學問題「爲什麼語言的設計者沒有在規範中包含這個功能」? – bacar