【问题标题】:Switch statement always executing default case when used in conjunction with prompt function与提示功能结合使用时,switch 语句始终执行默认情况
【发布时间】:2020-07-11 15:33:43
【问题描述】:
我在我的 HTML 中编写了以下 switch 语句:
<script>
const day = prompt("Enter day number: ");
switch (day) {
case 1:
document.write("Sun");
break;
case 2:
document.write("Mon");
break;
case 3:
document.write("Tue");
break;
default:
document.write("Wrong Choice");
}
</script>
即使我通过1 或2,上述语句总是生成输出Wrong Choice
【问题讨论】:
标签:
javascript
html
switch-statement
【解决方案1】:
prompt 总是返回一个字符串,并且大小写与=== 进行比较——字符串不会将=== 转换为数字。将您的案例改为字符串:
const day = prompt("Enter day number: ");
switch (day) {
case '1':
document.write("Sun");
break;
case '2':
document.write("Mon");
break;
case '3':
document.write("Tue");
break;
default:
document.write("Wrong Choice");
}
但是switch 非常冗长并且容易出错。考虑改用对象或数组:
const days = [, 'Sun', 'Mon', 'Tues', 'Wed', 'Thurs', 'Fri', 'Sat'];
const dayNum = prompt("Enter day number: ");
const day = days[dayNum] || 'Invalid';
console.log(day);
【解决方案2】:
我猜它是作为字符串传入的。努力去做
<script>
const day = prompt("Enter day number: ");
switch (day) {
case ‘1’:
document.write("Sun");
break;
case ‘2’:
document.write("Mon");
break;
case ‘3’
document.write("Tue");
break;
default:
document.write("Wrong Choice");
}
</script>