浏览器中没有显示任何内容,因为JavaScript没有编译器来运行它,但我不知道如何检查这种语言中的错误。
我的HTML
<!doctype html>
<html>
<head>
<title>Where am I?></title>
<script src="script4.js"></script>
</head>
<body>
</body>
</html>
我的script4.js
var number = 20;
switch(number) {
case number > 0:
alert(number + " is Positive");
break;
case number === 0:
alert(number + " is zero");
break;
case number < 0;
alert(number + " is negative");
default:
alert(number + " is not a number");
}
答案 0 :(得分:5)
JavaScript会将每个case表达式与switch值进行比较,因此您只需使用true
的开关值就可以编写布尔案例表达式,例如:
switch(true)
{
case number > 0:
alert(number + " is Positive");
break;
case number === 0:
alert(number + " is zero");
break;
case number < 0:
alert(number + " is negative");
break;
default:
alert(number + " is not a number");
}
请注意,虽然这对我来说是一种常见的模式(以及我希望在其他语言中存在的功能,例如C#),但有些开发人员可能会发现它非常规。
答案 1 :(得分:3)
这不是通常使用switch
语句的方式。 case
的参数必须是数字,字符串或布尔值(在这种情况下,您可以使用解析为布尔值的表达式,但我不明白为什么您必须这样做而不是使用{ {1}};我发现后者更容易阅读和理解):
if
这里应该使用的是switch(number) {
case 1:
alert("number is 1");
break;
...
...
default:
alert("Unknown number");
}
:
if/else
使用布尔表达式时会发生的情况是if(number > 0) {
alert("number is positive");
} else if(number === 0) {
alert("number is zero");
} else if(number < 0) {
alert("number is negative");
} else {
alert("not a number");
}
的参数与switch
或true
的布尔值进行比较。因此,您基本上将false
的数值与number
或true
进行比较,并且永远不会匹配。
答案 2 :(得分:1)
我不知道RedFilter的解决方案是否可行。 (很高兴知道!)在大多数基于C语言中,您只能针对特定值进行操作。通常,使用if/else
链:
if (number > 0)
alert(number + " is Positive");
else if (number === 0)
alert(number + " is zero");
else if (number < 0)
alert(number + " is negative");
else
alert(number + " is not a number");