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标签替换函数replaceWith()的使用例子
Aug 28 Javascript
详解JavaScript中循环控制语句的用法
Jun 03 Javascript
jquery实现简单的表单验证
Nov 17 Javascript
Angularjs全局变量被作用域监听的正确姿势
Feb 06 Javascript
详解js的异步编程技术的方法
Feb 09 Javascript
详解使用vue-router进行页面切换时滚动条位置与滚动监听事件
Mar 08 Javascript
JS中的Replace()传入函数时的用法详解
Sep 11 Javascript
jQuery中each方法的使用详解
Mar 18 jQuery
基于Vue实现微信小程序的图文编辑器
Jul 25 Javascript
ES6 更易于继承的类语法的使用
Feb 11 Javascript
nuxt静态部署打包相对路径操作
Nov 06 Javascript
js数组的基本使用总结
Jan 18 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
操作Oracle的php类
2006/10/09 PHP
PHP日期时间函数的高级应用技巧
2009/05/16 PHP
php若干单维数组遍历方法的比较
2011/09/20 PHP
关于js和php对url编码的处理方法
2014/03/04 PHP
php版微信公众平台实现预约提交后发送email的方法
2016/09/26 PHP
PHP实现生成模糊图片的方法示例
2017/12/21 PHP
PHP7.3.10编译安装教程
2019/10/08 PHP
一个简单的JavaScript数据缓存系统实现代码
2010/10/24 Javascript
JavaScript NodeTree导航栏(菜单项JSON类型/自制)
2013/02/01 Javascript
jQuery提交多个表单的小技巧
2014/07/27 Javascript
javascript实现淘宝幻灯片广告展示效果
2015/04/27 Javascript
JS区分浏览器页面是刷新还是关闭
2016/04/17 Javascript
推荐10款扩展Web表单的JS插件
2017/12/25 Javascript
Vue安装浏览器开发工具的步骤详解
2019/05/12 Javascript
基于vue-cli搭建多模块且各模块独立打包的项目
2019/06/12 Javascript
Vue+elementui 实现复杂表头和动态增加列的二维表格功能
2019/09/23 Javascript
深入理解Antd-Select组件的用法
2020/02/25 Javascript
[06:21]完美世界亚洲区首席发行官竺琦TI3采访
2013/08/26 DOTA
[07:54]DOTA2 MV《我的动力鞋》 ImbaTV 出品
2014/11/21 DOTA
Python素数检测的方法
2015/05/11 Python
Python实现二叉搜索树
2016/02/03 Python
python解析html提取数据,并生成word文档实例解析
2018/01/22 Python
python构建基础的爬虫教学
2018/12/23 Python
Django项目主urls导入应用中views的红线问题解决
2019/08/10 Python
详解python 中in 的 用法
2019/12/12 Python
python lambda的使用详解
2021/02/26 Python
美国最大的高尔夫发球时间预订网站:TeeOff.com
2018/03/28 全球购物
SQL注入攻击的种类有哪些
2013/12/30 面试题
安全教育演讲稿
2014/05/09 职场文书
大学新闻系应届生求职信
2014/06/02 职场文书
国际贸易专业自荐信
2014/06/10 职场文书
万里长城导游词
2015/01/30 职场文书
教师工作能力自我评价
2015/03/04 职场文书
2015年控辍保学工作总结
2015/05/18 职场文书
python中的None与NULL用法说明
2021/05/25 Python
Win10系统搭建ftp文件服务器详细教程
2022/08/05 Servers