Javascript中的Switch语句每次都返回默认值,但不返回大小写

Javascript中的Switch语句每次都返回默认值,但不返回大小写,javascript,if-statement,switch-statement,Javascript,If Statement,Switch Statement,我试图解决问题的条件3从。问题是,活动要求只使用ifmachineActive中的Switch语句。我使用if-else解决了这个问题,但是一旦我尝试使用switch语句,控制台就会显示我设置的默认消息,不管score变量得到什么值,一定是出了问题。每当我更改案例时,只会显示默认消息 在这种情况下,使用switch语句的正确方法是什么?if-else是最合适的选择,但这次我想坚持任务的规则 let response; let score = 75; let machineActive = tru

我试图解决问题的条件3从。问题是,活动要求只使用ifmachineActive中的Switch语句。我使用if-else解决了这个问题,但是一旦我尝试使用switch语句,控制台就会显示我设置的默认消息,不管score变量得到什么值,一定是出了问题。每当我更改案例时,只会显示默认消息

在这种情况下,使用switch语句的正确方法是什么?if-else是最合适的选择,但这次我想坚持任务的规则

let response;
let score = 75;
let machineActive = true;

if(machineActive) {


    switch(score){

        case (score<=100 && score>=90):
            response = "What an amazing score! Did you cheat? Are you for real?";
        break;

        case (score<=89 && score>=70):
            response = "That\'s a great score, you really know your stuff.";
        break;


        case (score<=69 && score>=40):
            response = "You did a passable job, not bad!";
        break;


        case (score<=39 && score>=20):
            response = "You know some things, but it's a pretty bad score. Needs improvement.";
        break;

        case (score<=19 && score>=0):
            response = "That was a terrible score — total fail!";
        break;

        default:
            response = "Something must be wrong";

    }


} else {
  response = 'The machine is turned off. Turn it on to process your score.';
}




将switchscore{更改为switchtrue{

它试图将分数=90===与其不相等的分数相等。

将switchscore{更改为switchtrue{

它试图将分数=90==与它没有的分数相等。

您需要

switch (true) {
因为您正在检查布尔值

通过使用score,唯一具有

case score:
这样就行了,因为switch使用了严格的比较

然后,您可以省略所有parentese,并通过对上面的off值使用filte分层,然后使用较小的值,最后使用负值的默认值来使用fall-through

让我们回应; 让分数=75; 让machineActive=true; 如果是机械反应的{ 切换为真{ 病例评分>100分: 反应=一定是出了什么问题; 打破 病例评分>=90分: 回答=多么惊人的分数!你作弊了吗?你是真的吗?; 打破 病例评分>=70: 回答=这是一个伟大的分数,你真的知道你的东西。; 打破 病例评分>=40: 回答=你做得还可以,还不错!; 打破 病例评分>=20: 回答=你知道一些事情,但这是一个相当糟糕的分数。需要改进。; 打破 案例得分>=0: 回答=那是一个糟糕的分数-完全失败!; 打破 违约: 反应=一定是出了什么问题; } }否则{ 响应='机器已关闭。打开它以处理您的分数'; } console.logresponse;您需要

switch (true) {
因为您正在检查布尔值

通过使用score,唯一具有

case score:
这样就行了,因为switch使用了严格的比较

然后,您可以省略所有parentese,并通过对上面的off值使用filte分层,然后使用较小的值,最后使用负值的默认值来使用fall-through

让我们回应; 让分数=75; 让machineActive=true; 如果是机械反应的{ 切换为真{ 病例评分>100分: 反应=一定是出了什么问题; 打破 病例评分>=90分: 回答=多么惊人的分数!你作弊了吗?你是真的吗?; 打破 病例评分>=70: 回答=这是一个伟大的分数,你真的知道你的东西。; 打破 病例评分>=40: 回答=你做得还可以,还不错!; 打破 病例评分>=20: 回答=你知道一些事情,但这是一个相当糟糕的分数。需要改进。; 打破 案例得分>=0: 回答=那是一个糟糕的分数-完全失败!; 打破 违约: 反应=一定是出了什么问题; } }否则{ 响应='机器已关闭。打开它以处理您的分数'; }
console.logresponse;switch语句用于确定是否有任何事例与传入的变量相等。您传入的是一个数字,因此没有一个布尔事例与该数字相等。您需要传入true,并查看是否有任何事例的计算结果为true

用于与表达式匹配的case子句。如果表达式与指定的值匹配,则case子句中的语句将一直执行,直到switch语句结束或中断。from

此外,案例是按顺序评估的,因为您有中断,所以不需要检查每个案例的范围上限

切换为真{ 病例评分>100分: 回答=你肯定作弊了。你一定去了https://www.stackoverflow.com 为了得到所有这些问题的答案。 打破 病例评分>=90分: 回答=多么惊人的分数!你作弊了吗?你是真的吗? 打破 病例评分>=70: 回答=这是一个伟大的分数,你真的知道你的东西。 打破 病例评分>=40: 回复=你做得还可以,还不错! 打破 病例评分>=20: 回应= 你知道一些事情,但这是一个相当糟糕的分数。需要改进。 打破 案例得分>=0: 回答=那是一个糟糕的分数-完全失败! 打破 违约: 回答=一定是出了什么问题 }
switch语句用于确定任何情况是否等于传入的变量。您正在传入num ber,所以没有一个布尔值大小写等于这个数字。您将希望传入true,并查看是否有任何案例评估为true

用于匹配表达式的case子句。如果表达式与指定的valueN匹配,则执行case子句中的语句,直到switch语句结束或中断。从

此外,案例是按顺序评估的,因为您有中断,所以不需要检查每个案例的范围上限

切换为真{ 病例评分>100分: 回答=你肯定作弊了。你一定去了https://www.stackoverflow.com 为了得到所有这些问题的答案。 打破 病例评分>=90分: 回答=多么惊人的分数!你作弊了吗?你是真的吗? 打破 病例评分>=70: 回答=这是一个伟大的分数,你真的知道你的东西。 打破 病例评分>=40: 回复=你做得还可以,还不错! 打破 病例评分>=20: 回应= 你知道一些事情,但这是一个相当糟糕的分数。需要改进。 打破 案例得分>=0: 回答=那是一个糟糕的分数-完全失败! 打破 违约: 回答=一定是出了什么问题 }
这与重复问题的答案有何不同?它只需要一次检查,并使用从最大到最小的条件顺序。thinkable也是另一个顺序。这与重复问题的答案有何不同?它只需要一次检查,并对从最大到最小的条件使用一个顺序。thinkable也是另一个顺序。switch语句用于确定任何情况是否等于switch语句中传递的变量用于确定任何情况是否等于传递的变量