使用Switch语句的JavaScript-没有得到预期的输出

JavaScript using the Switch Statement - Not getting the expected output

本文关键字:输出 Switch 语句 JavaScript- 使用      更新时间:2023-09-26

我对这方面还很陌生,还有很多东西要学。我在这段JavaScript中使用了Switch语句,但没有按照document.write行得到预期的输出。欢迎提供任何帮助、意见和建议。-非常感谢。

            <script type="text/javascript">
            var myAge = Number(prompt("Enter your age", 30));
            myAge = parseInt(myAge);
            switch (myAge)
            {
                case (myAge  >= 0 && myAge <= 10):
                    document.write("myAge is between 0 and 10");
                    break;
                case (!(myAge >= 0 && myAge <=10)):
                    document.write ("myAge is NOT between 0 and 10 <br />");
                    break;
                case (myAge >= 80 || myAge <= 10):
                    document.write ("myAge is 80 or above OR 10 or below <br />");
                    break;
                case (myAge >= 30 && myAge <=39 || (myAge >= 80 && myAge <= 89)):
                    document.write("myAge is between 30 and 39 or myAge is between 80 and 89");
                    break;
                default:
                    document.write("You did not enter a number.  Please enter a number.");
                    break;
            }       
            document.write("<BR>Execution continues here");

        </script>

这是我用"如果"写的。

        <script type="text/javascript">
        var myAge = Number(prompt("Enter your age", 30));
        if (myAge  >= 0 && myAge <= 10)
        {
            document.write ("myAge is between 0 and 10 <br />");
        }
        if (!(myAge >= 0 && myAge <=10))
        {
            document.write ("myAge is NOT between 0 and 10 <br />");
        }
        if (myAge >= 80 || myAge <= 10)
        {
            document.write ("myAge is 80 or above OR 10 or below <br />");
        }
        if (myAge >= 30 && myAge <=39 || (myAge >= 80 && myAge <= 89))
        {
            document.write("myAge is between 30 and 39 or myAge is between 80 and 89");
        }   

    </script>

这是我必须参考的使用"开关"的代码示例。

<script type="text/javascript">
var secretNumber = prompt("Pick a number between 1 and 5:", "");
secretNumber = parseInt(secretNumber);
switch (secretNumber)
{
case 1:
   document.write("Too low!");
   break;
case 2:
   document.write("Too low!");
   break;
case 3:
   document.write("You guessed the secret number!");
   break;
case 4:
   document.write("Too high!");
   break;
case 5:
   document.write("Too high!");
   break;
default:
   document.write("You did not enter a number between 1 and 5.");
   break;
}
document.write("<BR>Execution continues here");
</script>

您需要重新思考case表达式中的逻辑。

让我在你的代码中做一个替换,以说明的错误

var test = myAge >= 0 && myAge <= 10;
if (test) {
   ...
} else if (!test) {
   ...
} else {
   // WILL NEVER BE RUN
}

如果你想使用switch语句,你必须了解你使用的数据背后的类型。

true : Boolean
false : Boolean
9 : Number
1.0 : Number

在下面的例子中,v必须具有与value1value2相同的类型。

switch(v)
{
   case (value1):
   ...       
   case (value2):
   ...
}

问题是以下类型在您的示例中不匹配。

v = Number
value1 = Boolean
value2 = Boolean

对于这种情况,请使用if:

if (myAge  >= 0 && myAge <= 10){
    document.write("myAge is between 0 and 10");
}else if (!(myAge >= 0 && myAge <=10)){
    //...
}

switch代表多个精确的值,这不是您的情况:

switch(myAge){
    case 0:
        document.write("myAge is *exactly* 0");
        break;
    //...
}

您可以制作一个开关,它只计算true语句,它填充查找第一个true语句(case)(如果有的话),或者它将显示默认值。它将使用条件逻辑来工作。所以你的代码只需添加true,而不是myAge

var myAge = Number(prompt("Enter your age", 30));
switch (true) {
    case (myAge >= 0 && myAge <= 10):
        document.write("myAge is between 0 and 10");
        break;
    case (!(myAge >= 0 && myAge <= 10)):
        document.write("myAge is NOT between 0 and 10 <br />");
        break;
    case (myAge >= 80 || myAge <= 10):
        document.write("myAge is 80 or above OR 10 or below <br />");
        break;
    case (myAge >= 30 && myAge <= 39 || (myAge >= 80 && myAge <= 89)):
        document.write("myAge is between 30 and 39 or myAge is between 80 and 89");
        break;
    default:
        document.write("You did not enter a number.  Please enter a number.");
        break;
}

需要注意的是,像这样使用switch是一种性能高估。使用if/else语句更好/更快。

你可以在这里阅读更多关于switch的信息switch,在底部你可以看到使用的方法(方法二)。