簡體   English   中英

在Java語言中使用短路評估設置字符串時出現意外行為

[英]Not expected behavior while setting a string with short-circuit evaluation in Javascript

我想使用這種短路評估來報告一個襯板中多個項目的良好狀態。 但是結果卻不符合預期,如下所示:

 var items = [{ "id": 1, "available": true }, { "id": 2, "available": false }, { "id": 3, "error": "Server not found for that TLD" }]; items.forEach(function(item) { console.log(item.id, item.error || item.available ? "Available" : "Not available"); }); 

這產生了以下日志:

1 "Available"
2 "Not available"
3 "Available"

3我希望它顯示錯誤,因為item.error是一個字符串,應該評估為true,為什么將其跳過到item.available?

item.error || item.available item.error || item.available是真實的。

您需要括號:

item.error || (item.available ? "Available" : "Not available")

正如@SLaks所說,括號將解決此問題。 操作順序與您預期的不同。 || 在三元運算符之前進行評估。

您可以在這里查看訂單。 邏輯OR剛好在條件運算符https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Operator_Precedence之上

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM