還請描述為什么該陳述句以這種方式執行。
我很困惑,因為<運算子在下面的陳述句中具有更高的優先級。執行后x > 0執行應該去&&運算子,但它沒有執行。所以我對執行順序是什么以及為什么以這種方式執行感到困惑。
謝謝你的時間!
代碼如下:
let x = 1;
x > 0 || alert() && "hii"
uj5u.com熱心網友回復:
如果您查看運算子優先級。
>具有最高優先級&&是下一個優先||是下一個優先
所以運算式執行如下:
(x > 0) || (alert() && "hii")
在這種情況下x > 0是true。因為JavaScript|| 短路如果第一運算元是truthy,第二運算元將不進行評估。
就像是:
fun1() || func2()
如果 的回傳值為fun1()真,func2()則根本不會執行。
uj5u.com熱心網友回復:
有沒有必要使用右側的||,因為左側是已經truthy,所以無論什么右側會是這樣,它無論如何也改變結果(包括true || true和true || false將評估為true)。因此,除了x > 0需要評估以獲得明確的結果外,alert() && "hii"不會跳過任何其他內容,并且回傳值是true( 的結果x > 0)。(這稱為短路或條件評估。)請參閱檔案。
uj5u.com熱心網友回復:
如果你試過這個:
let x = 1;
x > 0 || alert() && false
輸出將是true,這是因為&&在||運算子之前執行,"hii"被評估為真,所以這會讓您認為有問題,因為( true || alert() && true會給出與true || (alert() && true).
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/341034.html
標籤:javascript 逻辑运算符
上一篇:單擊按鈕/網址上的Javascript警報DIV內容
下一篇:我想從陣列制作HTML表格
