簡體   English   中英

為什么這個 switch 語句不能完美運行?

[英]Why this switch statement isn't work perfectly?

 const number = prompt("Enter your number"); const txt = "You result is: "; switch (number) { case (number >= 80 && number <= 100): document.write(`${txt} A+`); break; case (number >= 70 && number <= 80): document.write(`${txt} A gread`); break; case (number >= 60 && number <= 70): document.write(`${txt} B gread`); break; case (number >= 50 && number <= 60): document.write(`${txt} C gread`); break; case (number >= 33 && number <= 50): document.write(`${txt} D gread`); break; case (number >= 0 && number <= 33): document.write(`${txt} Field;`); break: case (number > 100 || number < 0). document.write(`It's not a valid number. Please input any valid number;`); break: default. document.write(`Not input any number. Please input any number;`); break; }

使用 switch 語句,您可以在switch之后立即評估表達式。 在你的情況下,那將是number

因此,您的案例將使用數字進行評估。 這將發生:

  • 假設,我們在提示中輸入“88”。
  • 您評估number的第一件事是(number >= 80 && number <= 100) 后者的結果為true
  • 現在將number的值88true進行比較,如下所示: 88===true
  • 這導致false ,因此評估下一個案例。
  • 以下情況也會發生同樣的情況,直到您遇到默認情況。

這段代碼不起作用的原因有兩個:

  • 第一個原因是因為prompt方法返回一個字符串,你可以通過鍵入看到

     console.log('Type of number:', typeof number); // Expected output: Type of number: string

    可以通過解析提示方法的output來解決這個問題,如下

     const number = parseInt(prompt("Enter your number"));
  • 第二個原因是因為在switch語句語句中,switch 表達式的評估值與 case 的評估值進行了比較。

    這意味着將number (number) 的值與表達式(number >= 80 && number <= 100)進行比較(比較表達式),以此類推。

    因此,除非一個 yoru case 表達式產生一個數字,否則switch將嘗試將number的值評估為表達式(始終為真),這意味着switch正在比較45 === true ,不匹配任何情況。

只需使用if / else代替:

if (number >= 80 && number <= 100)
    document.write(`${txt} A+`);
else if (number >= 70 && number <= 80)
    document.write(`${txt} A gread`);
else if (number >= 60 && number <= 70)
    document.write(`${txt} B gread`);
else if (number >= 50 && number <= 60)
    document.write(`${txt} C gread`);
else if (number >= 33 && number <= 50)
    document.write(`${txt} D gread`);
else if (number >= 0 && number <= 33)
    document.write(`${txt}  Field !`);
else if (number > 100 || number < 0)
    document.write(`It's not a valid number. Please input any valid number.`);
else
    document.write(`Not input any number. Please input any number .`);

暫無
暫無

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

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