JavaScript中switch判断容易犯错的一个细节


Posted in Javascript onAugust 27, 2014

switch语句与if语句的关系最为密切,也是其它编程语言中普遍使用的一种流程控制语句,但switch的匹配是全等模式,如果不注意这个细节则写程序时往往会出错。

代码:

var n = '5';
switch(n){
    case 5:
        alert('执行case分支');
        break;
    default:
        alert('执行default分支');
}

结果:

JavaScript中switch判断容易犯错的一个细节

可能很多人会误以为以上程序会走case分支,结果却走了default分支。难道它们两个不相等吗?我们使用if语句看看。

代码:

var n = '5';
if(n==5){
    alert('真 分支');
}else{
    alert('假 分支');
}

结果:

JavaScript中switch判断容易犯错的一个细节

在if语句里可以匹配,但为何在switch语句里不能匹配呢?

这是因为在switch语句里的case使用全等模式,也就相当于if里的使用三个等号类似。我们把case的代码改写一下

代码:

var n = '5';
switch(n){
    case '5': // 把原来的 case 5 改写成 case '5'
        alert('执行case分支');
        break;
    default:
        alert('执行default分支');
}

结果:

JavaScript中switch判断容易犯错的一个细节

改写了以后就能走case分支了,就像我们if里使用三个全等号一样

代码:

var n = '5';
if(n===5){
    alert('真 分支');
}else{
    alert('假 分支');
}

结果:

JavaScript中switch判断容易犯错的一个细节

因为使用全等,所以字符串5不等于数字5,结果走了假分支。

由以上例子说明在 switch中使用的是全等匹配模式,特别是数字与字符串匹配的时候需要注意的一个问题

Javascript 相关文章推荐
JavaScript版代码高亮
Jun 26 Javascript
JavaScript Scoping and Hoisting 翻译
Jul 03 Javascript
Js四则运算函数代码
Jul 21 Javascript
getComputedStyle与currentStyle获取样式(style/class)
Mar 19 Javascript
JS Replace 全部替换字符的用法小结
Dec 24 Javascript
jQuery实现的自定义弹出层效果实例详解
Sep 04 Javascript
jQuery Layer弹出层传值到父页面的实现代码
Aug 17 jQuery
vue中当图片地址无效的时候,显示默认图片的方法
Sep 18 Javascript
angular4 获取wifi列表中文显示乱码问题的解决
Oct 20 Javascript
js计算最大公约数和最小公倍数代码实例
Sep 11 Javascript
原生JS实现pc端轮播图效果
Dec 21 Javascript
利用uni-app生成微信小程序的踩坑记录
Apr 05 Javascript
JavaScript中使用arguments获得函数传参个数实例
Aug 27 #Javascript
JavaScript中输出标签的方法
Aug 27 #Javascript
JavaScript实现的GBK、UTF8字符串实际长度计算函数
Aug 27 #Javascript
JavaScript实现的使用键盘控制人物走动实例
Aug 27 #Javascript
JavaScript截取字符串的2个函数介绍
Aug 27 #Javascript
JavaScript中判断页面关闭、页面刷新的实现代码
Aug 27 #Javascript
jQuery中的read和JavaScript中的onload函数的区别
Aug 27 #Javascript
You might like
解决PHP mysql_query执行超时(Fatal error: Maximum execution time …)
2013/07/03 PHP
php调用google接口生成二维码示例
2014/04/28 PHP
php中curl和file_get_content的区别
2014/05/10 PHP
PHP 如何获取二维数组中某个key的集合
2014/06/03 PHP
PHP实现文件上传操作和封装
2020/03/04 PHP
Dojo 学习要点
2010/09/03 Javascript
基于jquery自己写tab滑动门(通用版)
2012/10/30 Javascript
jquery插件之信息弹出框showInfoDialog(成功/错误/警告/通知/背景遮罩)
2013/01/09 Javascript
js 获取和设置css3 属性值的实现方法
2013/05/06 Javascript
js控制的遮罩层实例介绍
2013/05/29 Javascript
json中换行符的处理方法示例介绍
2014/06/10 Javascript
Javascript 中创建自定义对象的方法汇总
2014/12/04 Javascript
js获取当前时间显示在页面上并每秒刷新
2014/12/24 Javascript
jquery实现全选、反选、获得所有选中的checkbox
2020/09/13 Javascript
动态更新highcharts数据的实现方法
2016/05/28 Javascript
微信小程序 解决swiper不显示图片的方法
2017/01/04 Javascript
jQuery 表单序列化实例代码
2017/06/11 jQuery
nodejs实现简单的gulp打包
2017/12/21 NodeJs
JS动态插入脚本和插入引用外部链接脚本的方法
2018/05/21 Javascript
详解js实时获取并显示当前时间的方法
2019/05/10 Javascript
Vue Components 数字键盘的实现
2019/09/18 Javascript
JS实现悬浮球只在一侧滑动并且是横屏状态下
2020/08/19 Javascript
flask入门之文件上传与邮件发送示例
2018/07/18 Python
Python实现程序判断季节的代码示例
2019/01/28 Python
python重试装饰器的简单实现方法
2019/01/31 Python
详解用Python实现自动化监控远程服务器
2019/05/18 Python
Pycharm中安装wordcloud等库失败问题及终端通过pip安装的Python库如何添加到Pycharm解释器中(推荐)
2020/05/10 Python
利用HTML5绘制点线面组成的3D图形的示例
2015/05/12 HTML / CSS
localStorage的过期时间设置的方法详解
2018/11/26 HTML / CSS
Sneaker Studio罗马尼亚网站:购买运动鞋
2018/11/04 全球购物
食品厂厂长岗位职责
2014/01/30 职场文书
营销总经理岗位职责
2014/02/02 职场文书
坚守艰苦奋斗精神坚决反对享乐主义整改措施
2014/09/17 职场文书
小学语文教师年度考核个人总结
2015/02/05 职场文书
html5调用摄像头实例代码
2021/06/28 HTML / CSS
代码复现python目标检测yolo3详解预测
2022/05/06 Python