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 相关文章推荐
jQuery.fn和jQuery.prototype区别介绍
Oct 05 Javascript
js调用后台、后台调用前台等方法总结
Apr 17 Javascript
浅谈jquery上下滑动的注意事项
Oct 13 Javascript
js实现交通灯效果
Jan 13 Javascript
微信小程序 自定义Toast实例代码
Jun 12 Javascript
如何在 JavaScript 中更好地利用数组
Sep 27 Javascript
vue+node实现图片上传及预览的示例方法
Nov 22 Javascript
VUE2.0 ElementUI2.0表格el-table自适应高度的实现方法
Nov 28 Javascript
React如何实现浏览器打印部分内容详析
May 19 Javascript
ElementUI之Message功能拓展详解
Oct 18 Javascript
vue element-ui实现input输入框金额数字添加千分位
Dec 29 Javascript
vue项目配置 webpack-obfuscator 进行代码加密混淆的实现
Feb 26 Vue.js
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
ThinkPHP通过AJAX返回JSON的两种实现方法
2014/12/18 PHP
DOM基础及php读取xml内容操作的方法
2015/01/23 PHP
redis+php实现微博(二)发布与关注功能详解
2019/09/23 PHP
Zero Clipboard js+swf实现的复制功能使用方法
2010/03/07 Javascript
HTML5附件拖拽上传drop & google.gears实现代码
2011/04/28 Javascript
使用jQuery实现的网页版的个人简历(可换肤)
2013/04/19 Javascript
js父窗口关闭时子窗口随之关闭完美解决方案
2014/04/29 Javascript
js实现漂浮回顶部按钮实例
2015/05/06 Javascript
javascript实现粘贴qq截图功能(clipboardData)
2016/05/29 Javascript
关于javascript中限定时间内防止按钮重复点击的思路详解
2016/08/16 Javascript
AngularJS通过$sce输出html的方法
2016/09/22 Javascript
jQuery实现表格与ckeckbox的全选与单选功能
2016/11/24 Javascript
AngularJS控制器controller给模型数据赋初始值的方法
2017/01/04 Javascript
js合并两个数组生成合并后的key:value数组
2018/05/09 Javascript
vue实现同一个页面可以有多个router-view的方法
2018/09/20 Javascript
Vue+ElementUI项目使用webpack输出MPA的方法
2019/08/27 Javascript
JS实现单张或多张图片持续无缝滚动的示例代码
2020/05/10 Javascript
[01:01:24]LGD vs Fnatic 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
编程语言Python的发展史
2014/09/26 Python
《Python之禅》中对于Python编程过程中的一些建议
2015/04/03 Python
python搜索指定目录的方法
2015/04/29 Python
Python的Django中django-userena组件的简单使用教程
2015/05/30 Python
Python基于FTP模块实现ftp文件上传操作示例
2018/04/23 Python
python3实现字符串操作的实例代码
2019/04/16 Python
django框架实现模板中获取request 的各种信息示例
2019/07/01 Python
python3.7 利用函数os pandas利用excel对文件名进行归类
2019/09/29 Python
Python基于yaml文件配置logging日志过程解析
2020/06/23 Python
Joie官方网上商店:购买服装和女装配饰
2018/06/05 全球购物
英国Office鞋店德国网站:在线购买鞋子、靴子和运动鞋
2018/12/19 全球购物
教育科学研究生自荐信
2013/10/09 职场文书
个人批评与自我批评发言稿
2014/09/28 职场文书
2014年人力资源工作总结
2014/11/19 职场文书
小平您好观后感
2015/06/09 职场文书
2015年车间管理工作总结
2015/07/23 职场文书
升职自荐书
2019/05/09 职场文书
C站最全Python标准库总结,你想要的都在这里
2021/07/03 Python