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 相关文章推荐
可拖动窗口,附带鼠标控制渐变透明,开启关闭功能
Jun 26 Javascript
jquery处理json数据实例分析
Jun 03 Javascript
用js的document.write输出的广告无阻塞加载的方法
Jun 05 Javascript
JS 新增Cookie 取cookie值 删除cookie 举例详解
Oct 10 Javascript
Jquery on绑定的事件 触发多次实例代码
Dec 08 Javascript
knockoutjs模板实现树形结构列表
Jul 31 Javascript
SelectPage v2.4 发布新增纯下拉列表和关闭分页功能
Sep 07 Javascript
JS+H5 Canvas实现时钟效果
Jul 20 Javascript
webpack4.0 入门实践教程
Oct 08 Javascript
vue+koa2实现session、token登陆状态验证的示例
Aug 30 Javascript
利用js canvas实现五子棋游戏
Oct 11 Javascript
vue使用exif获取图片旋转,压缩的示例代码
Dec 11 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
PHP转换IP地址到真实地址的方法详解
2013/06/09 PHP
php判断数组中是否存在指定键(key)的方法
2015/03/17 PHP
Yii rules常用规则示例
2016/03/15 PHP
使用php实现从身份证中提取生日
2016/05/09 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
PHP设计模式之数据访问对象模式(DAO)原理与用法实例分析
2019/12/12 PHP
用JavaScript事件串连执行多个处理过程的方法
2007/03/09 Javascript
Javascript 获取链接(url)参数的方法[正则与截取字符串]
2010/02/09 Javascript
jquery ajax提交表单数据的两种实现方法
2010/04/29 Javascript
JS预览图像将本地图片显示到浏览器上
2013/08/25 Javascript
javascript中的undefined和not defined区别示例介绍
2014/02/26 Javascript
一个简单的动态加载js和css的jquery代码
2014/09/01 Javascript
JS实现的自定义右键菜单实例二则
2015/09/01 Javascript
HTML的select控件美化
2017/03/27 Javascript
AngularJs1.x自定义指令独立作用域的函数传入参数方法
2018/10/09 Javascript
详解使用uni-app开发微信小程序之登录模块
2019/05/09 Javascript
[37:35]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第二局
2016/02/25 DOTA
Python实现Windows上气泡提醒效果的方法
2015/06/03 Python
python实现ID3决策树算法
2018/08/29 Python
符合语言习惯的 Python 优雅编程技巧【推荐】
2018/09/25 Python
浅谈Pandas:Series和DataFrame间的算术元素
2018/12/22 Python
浅谈python多进程共享变量Value的使用tips
2019/07/16 Python
如何使用python实现模拟鼠标点击
2020/01/06 Python
TensorFlow dataset.shuffle、batch、repeat的使用详解
2020/01/21 Python
Python unittest单元测试框架及断言方法
2020/04/15 Python
浅析Python 条件控制语句
2020/07/15 Python
台湾专柜女包:KINAZ
2019/12/26 全球购物
电气自动化自荐信
2013/10/10 职场文书
高中历史教学反思
2014/02/08 职场文书
红旗方阵解说词
2014/02/12 职场文书
2014年大学生就业规划书
2014/04/04 职场文书
电教室标语
2014/06/20 职场文书
2015年护士节活动总结
2015/02/10 职场文书
计算机教师工作总结
2015/08/13 职场文书
html+css 实现简易导航栏功能
2021/04/07 HTML / CSS
python 管理系统实现mysql交互的示例代码
2021/12/06 Python