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

来源:4-4 多种选择(Switch语句)

rainy_li3676598

2016-09-23 14:11

<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回答

  • IVYADA
    2016-09-23 14:35:57
    已采纳

    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("回家带娃");


    rainy_...

    非常感谢!

    2016-09-23 14:48:38

    共 1 条回复 >

  • rainy_li3676598
    2016-09-23 14:17:17

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


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

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

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468190 学习 · 21891 问题

查看课程

相似问题