我有一個與此類似的示例,其中第一個運算式的計算結果為 false,第二個運算式未定義,但整體運算式回傳 undefined 到 valueResult,第一個 false 值是否應該終止檢查并回傳 false?
valueResult = false && 10 === 5 ? 'match' : undefined
我添加了控制臺日志陳述句和除錯器,這就是正在發生的事情,但是當我在瀏覽器控制臺上執行 false && undefined 時,它回傳 false。
uj5u.com熱心網友回復:
在您更新的示例中,邏輯 AND… && …的優先級 (5) 高于三元… ? … : …(3) 的評估。
查看 MDN 上的表格:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence#table
uj5u.com熱心網友回復:
&& 運算子的優先級高于三元運算子。這就是為什么會發生以下情況:
基本上你有一個三元運算子(false && (10 === 5) ? : 'match' : undefined。10 === 5評估為假,false && false也導致假。這就是回傳 undefined 而不是 'match' 的原因。
要解決此問題,請在 && 之后添加括號,如下所示:
false && (10 === 5 ? 'match' : undefined)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/484148.html
標籤:javascript 反应 布尔运算 短路评估
上一篇:如何將此javascript日期時間物件轉換為與當前物件進行比較
下一篇:如何將中心的邊框影片與文本對齊
