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 相关文章推荐
IE6/7 and IE8/9/10(IE7模式)依次隐藏具有absolute或relative的父元素和子元素后再显示父元素
Jul 31 Javascript
onmouseover和onmouseout的一些问题思考
Aug 14 Javascript
高效率JavaScript编写技巧整理
Aug 23 Javascript
JavaScript显示当然日期和时间即年月日星期和时间
Oct 29 Javascript
JavaScript使用replace函数替换字符串的方法
Apr 06 Javascript
在JavaScript中操作时间之getUTCDate()方法的使用
Jun 10 Javascript
Bootstrap select多选下拉框实现代码
Dec 23 Javascript
详解微信开发中snsapi_base和snsapi_userinfo及静默授权的实现
Mar 11 Javascript
VueAwesomeSwiper在VUE中的使用以及遇到的一些问题
Jan 11 Javascript
让axios发送表单请求形式的键值对post数据的实例
Aug 11 Javascript
react使用CSS实现react动画功能示例
May 18 Javascript
纯JS开发baguetteBox.js响应式画廊插件
Jun 28 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框架codeigniter中如何使用框架的session
2013/06/24 PHP
php 反斜杠处理函数addslashes()和stripslashes()实例详解
2016/12/25 PHP
PHP后台微信支付和支付宝支付开发
2017/04/28 PHP
PHP接口继承及接口多继承原理与实现方法详解
2017/10/18 PHP
Prototype使用指南之form.js
2007/01/10 Javascript
JSP中使用JavaScript动态插入删除输入框实现代码
2014/06/13 Javascript
鼠标移到图片上变大显示而不是放大镜效果
2014/06/15 Javascript
javascript实现别踩白块儿小游戏程序
2015/11/22 Javascript
原生js实现图片轮播特效
2015/12/18 Javascript
JSON格式的时间/Date(2367828670431)/格式转为正常的年-月-日 格式的代码
2016/07/27 Javascript
jQuery多文件异步上传带进度条实例代码
2016/08/16 Javascript
关于Jquery中的事件绑定总结
2016/10/26 Javascript
利用select实现年月日三级联动的日期选择效果【推荐】
2016/12/13 Javascript
vue 解决addRoutes动态添加路由后刷新失效问题
2018/07/02 Javascript
vue mounted 调用两次的完美解决办法
2018/10/29 Javascript
JavaScript继承与聚合实例详解
2019/01/22 Javascript
浅谈JS和jQuery的区别
2019/03/27 jQuery
原生js实现随机点名
2020/07/05 Javascript
使用python在本地电脑上快速处理数据
2017/06/22 Python
selenium如何定位span元素的实现
2021/01/13 Python
Wiggle美国:英国骑行、跑步、游泳、铁人三项商店
2018/10/27 全球购物
乌克兰设计师和品牌的服装:Love&Live
2020/04/14 全球购物
C语言笔试题回忆
2015/04/02 面试题
思想政治教育专业个人求职信范文
2013/12/20 职场文书
大学生党员自我批评
2014/02/14 职场文书
小学班级口号
2014/06/09 职场文书
新学期开学标语
2014/06/30 职场文书
部队2014年终工作总结
2014/11/27 职场文书
2014年工商所工作总结
2014/12/09 职场文书
我们的节日重阳节活动总结
2015/03/24 职场文书
休假证明书
2015/06/24 职场文书
干部考核工作总结2015
2015/07/24 职场文书
2016年清明节红领巾广播稿
2015/12/17 职场文书
导游词之太湖
2019/10/08 职场文书
一小时学会TensorFlow2之基本操作2实例代码
2021/09/04 Python
详解Python内置模块Collections
2022/03/22 Python