我得在調試器監視兩個表達式(在同一時間):評估順序
item.isSelected() === true
:false
,並在同一時間:
(item.isSelected() === true) && !(item.workflowStatusCode.toUpperCase() === "INRV") && (item.productStatusCode.toUpperCase() !== "ACTV") || (item.workflowStatusCode.toUpperCase() === "INPR")
: true
爲什麼當第一個錯誤時第二個評估爲真?
ADDITION:
從here
短路評價
作爲邏輯表達式被從左向右計算,它們被評價使用測試 可能的 「短路」以下規則:
false & &任何東西被短路評估爲false。
...它有點暗示,一旦第一個表達式被評估爲false
其餘的應該被跳過......我仍然不清楚這些規則背後是什麼。
顯然'item.workflowStatusCode.toUpperCase()===「INPR」正在計算爲「true」,並且它與表達式的其他部分進行OR運算,因此整體表達式爲「true」。 – bdesham
@bdesham同意 – DontVoteMeDown
因此,他們正在從左到右進行評估,其中每個評估對將成爲下一個評估的結果 ?或者像馬特·鮑爾所說的那樣,它與優先級有關? (如果是這樣,如何) –