我從一個Python背景,做一個JavaScript項目後,整個問題就在那裏JavaScript的比較運算符
輸出爲true 這我的猜測是,它運行的第一個運營商並完全無視第二個
和python它將呈現爲false。
我不是關心如何得到這個工作,但它的奇怪的是,它不是在文檔中其唯一的暗示做(0 < X & & X < 3),而不是把它簡單
想我的問題
0 < 5
將T:所以這是這樣的,如果任何人,甚至可以回答
我從一個Python背景,做一個JavaScript項目後,整個問題就在那裏JavaScript的比較運算符
輸出爲true 這我的猜測是,它運行的第一個運營商並完全無視第二個
和python它將呈現爲false。
我不是關心如何得到這個工作,但它的奇怪的是,它不是在文檔中其唯一的暗示做(0 < X & & X < 3),而不是把它簡單
想我的問題
0 < 5
將T:所以這是這樣的,如果任何人,甚至可以回答
在JavaScript中,由左到右Relational operators執行芸香,即1
,所以
0 < 5 < 3
轉換成:
1 < 3
這是真實的。
另一方面,Python中的comparison operations具有相同的優先級。
與C不同,像
a < b < c
這樣的表達式具有 在數學中是常規的解釋。
這是一步一步的評估。當將數字和布爾值與<
進行比較時,true變爲1,並且0變爲false。
0 < 5 < 3 // =>
true < 3 // =>
Number(true) < 3 // =>
1 < 3 // =>
true
見spec 11.8.5,規則3,它描述了ToNumber
鑄造。
3)如果不是這兩種類型(PX)是字符串和類型(PY)的情況下是字符串,然後
a)設NX是調用ToNumber(PX)的結果。因爲px和py是原始的 值評估順序並不重要。
b)讓ny是調用ToNumber(py)的結果。
「簡單」是一個相對術語。讀者可能會發現將「0 <5 <3」解釋爲「0 <5和5 <3」很簡單,但是計算機可能會發現將其解釋爲「(0 <5)<3」更簡單。 – Kevin