简体   繁体   English

在 JS 中切换…大小写

[英]Switch…case in JS

This simple problem gives me an error.这个简单的问题给了我一个错误。 Does not get the correct answer.得不到正确答案。 I will be glad if you help.如果你能帮忙,我会很高兴。

let point = 90;
switch (point) {
    case point >= 51 && point <= 60:
        console.log('Your price: E');
        break;
    case point >= 61 && point <= 70:
        console.log('Your price: D');
        break;
    case point >= 71 && point <= 80:
        console.log('Your price: C');
        break;
    case point >= 81 && point <= 90:
        console.log('Your price: B');
        break;
    case point >= 91 && point <= 100:
        console.log('Your price: A');
        break;
    default:
        console.log('You did not pass');
}

Output: You did not pass Output:你没有通过

this way这边走

 let point = 90; switch (true) { case point >= 51 && point <= 60: console.log('Your price: E'); break; case point >= 61 && point <= 70: console.log('Your price: D'); break; case point >= 71 && point <= 80: console.log('Your price: C'); break; case point >= 81 && point <= 90: console.log('Your price: B'); break; case point >= 91 && point <= 100: console.log('Your price: A'); break; default: console.log('You did not pass'); }

can you explain why we write true ?你能解释一下为什么我们写true吗? – Hussein Nadjafli (PO) – 侯赛因·纳贾弗利 (PO)

The JS switch only works on strict equality. JS switch仅适用于严格相等。

switch (A) {
   case ‘x1’: ...
   case ‘x2’: ...

is equivalent to相当于

if       (A === ’x1’) { ...
else if  (A === ’x2’) { ...

in your code you replace the possible values ['x1','x2',...] with an evaluation like在您的代码中,您将可能的值['x1','x2',...]替换为类似的评估

(point >= 61 && point <= 70)

which returns either true or false返回truefalse
so your code becomes:所以你的代码变成:

if       (A === (point >= 51 && point <= 60)) { ...
else if  (A === (point >= 61 && point <= 70)) { ...

by replacing the A by true you therefore have a comparison between:因此,通过将A替换为true ,您可以比较:

if       (true === (point >= 51 && point <= 60)) { ...
else if  (true === (point >= 61 && point <= 70)) { ...

You can also do:你也可以这样做:

 function codePrice(val) { let code = 'ABCDE'[10 - Math.ceil(val / 10)] return (?:code): `Your price. ${code}` :'You did not pass' } console.log( codePrice(90) )

Can also be simplified:也可以简化:

 let point = 90; switch (true) { case point < 51: console.log('You did not pass'); break; case point < 61: console.log('Your price: E'); break; case point < 71: console.log('Your price: D'); break; case point < 81: console.log('Your price: C'); break; case point < 91: console.log('Your price: B'); break; default: console.log('Your price: A'); break }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM