簡體   English   中英

三元運算符javascript

[英]Ternary operator javascript

這段代碼有什么問題? 如果我在沒有任何參數的情況下調用此函數,則預期的輸出是“關鍵”而不是“中等”。

let labelBlock = (label="") =>{
        label = label.toLowerCase();
        const txt = label == "high" ? "High" : "medium" ? "Medium" : "Critical";
        return `<span class="${txt.toLowerCase()}">${txt}</span>`;
      }

label一開始是空的。 第一個條件label == "high"是假的,在第二個條件中你有"medium" ,在 Js 中,它是真值,因此設置了"Medium"

您可以將該行更改為以下內容以獲得Critical 請參閱更改( label == "medium"

const txt = label == "high" ? "High" : label == "medium" ? "Medium" : "Critical";

您需要用“label == 'medium'”替換“medium”。

let labelBlock = (label="") =>{
    label = label.toLowerCase();
    const txt = label == "high" ? "High" : label == "medium" ? "Medium" : "Critical";
    return `<span class="${txt.toLowerCase()}">${txt}</span>`;
}

第二部分中的“中”表達式在您的代碼中始終為“真”。 所以第二個三元運算符總是返回第一個值(“Medium”)。

沒有在第二部分"medium" ? "Medium" : "Critical";評估的條件"medium" ? "Medium" : "Critical"; "medium" ? "Medium" : "Critical";

希望這對你有用

 const txt = label == "high" ? "High" : label == "medium" ? "Medium" : "Critical";

您的三元運算含義如下。 如您所見,問題在於您正在檢查if ("medium")

  var txt;
  if (label == "high") {
    txt = "High";
  } else {
    if ("medium") {
      text = "Medium";
    } else {
      text = "Critical";
    }
  }

暫無
暫無

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

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