使用Switch语句的JavaScript-没有得到预期的输出
JavaScript using the Switch Statement - Not getting the expected output
我对这方面还很陌生,还有很多东西要学。我在这段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
必须具有与value1
和value2
相同的类型。
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,在底部你可以看到使用的方法(方法二)。
相关文章:
- 在JavaScript中输出转义字符
- 如何在jQuery中将函数的输出分配给变量
- Javascript,输出结果后页面不断刷新
- Datetime格式为Friendly Time.Moment JS输出错误
- 如何将angularjs中的javascript字符串输出为循环数组
- HTML5FileReader输出到D3.js图表
- console.log以外的Javascript输出函数
- Eloquent JavaScript递归示例如何终止为返回1,但仍然输出指数值
- PHP中的数组输出
- 以不同的顺序输出数据
- 使用Rivets.js输出类
- 在Chrome扩展内部输出Google API调用
- 如何在ng-reeat中使用ng-switch来编辑JSON API数据
- 如何为d3.js图表输出组织/嵌套数据
- 将IndexedDB中的数据拉入数组,并通过ReactJS输出
- 一个ajax循环有两个输出错误innerHTML
- 快速排序程序未正确输出
- 函数将输出nan而不是数字,为什么
- 使用Switch语句的JavaScript-没有得到预期的输出
- 比较a-z还是a-z,并使用switch JavaScript函数给出输出