为了账号安全,请及时绑定邮箱和手机立即绑定

关于switch里面表达式是不是必须是数值的问题

<body>

<script type="text/javascript">

var mes=prompt("请输入星期","");


 if (mes==1|mes==2)

    document.write("学习理念知识");

else if (mes==3|mes==4)

     document.write("到企业实践");

else if (mes==5)

     document.write("总结经验");

else

document.write("回家带娃");

 

/*

switch (mes)

{

 case 1:

 case 2:

 document.write("学习理念知识");

 break;

 case 3:

 case 4:

 document.write("到企业实践");

 break;

 case 5:

 document.write("总结经验");

break;

default:

 document.write("回家带娃");

}

*/

</script>

</body>

想实现的是, 通过prompt输入星期所对应数字,然后告诉你该做什么,用前面的if else 可以简单实现, 但是用switch怎么都不能正常运行,我试过prompt返回值是数值啊,为什么switch不起作用?

另外还发现一个问题, 逻辑或 不是应该是 双竖线“||” 吗, 怎么这里用双竖线反而是错的, 用单实线是对的 if (mes==1|mes==2)

正在回答

2 回答

1. prompt返回值为字符串,case后面的值需要类型和数值都匹配。

       正确答案是:

case "1":
case "2":
    document.write("学习理念知识");
    break;

2. 逻辑或中 | 和 || 都是可以的

但是为了代码更准确(返回值其实是字符串),请使用下面的代码:

var mes=prompt("请输入星期","");

if (mes=="1"||mes=="2")
    document.write("学习理念知识");
else if (mes=="3"||mes=="4")
     document.write("到企业实践");
else if (mes=="5")
     document.write("总结经验");
else
document.write("回家带娃");


2 回复 有任何疑惑可以回复我~
#1

rainy_li3676598 提问者

非常感谢!
2016-09-23 回复 有任何疑惑可以回复我~

刚刚看了一下有个朋友也在问这个问题,我就试了一下, 给case里面的数值加上""就对了, 我可以这样理解 吗?


// prompt 获取是的字符串,所以在case后面的值应该加"";

 如果是和一个数值进行比较, 还可以写成这样: switch(parseInt(mes))

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

关于switch里面表达式是不是必须是数值的问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信