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实现下拉收缩(展开与折叠)特效
Dec 25 Javascript
js和css写一个可以自动隐藏的悬浮框
Mar 05 Javascript
PhotoSwipe异步动态加载图片方法
Aug 25 Javascript
jQuery操作复选框(CheckBox)的取值赋值实现代码
Jan 10 Javascript
Angular.js基础学习之初始化
Mar 10 Javascript
学习使用Bootstrap页面排版样式
May 11 Javascript
微信小程序实现图片压缩功能
Jan 26 Javascript
利用原生的JavaScript实现简单拼图游戏
Nov 18 Javascript
vue-router两种模式区别及使用注意事项详解
Aug 01 Javascript
JavaScript设计模式之观察者模式与发布订阅模式详解
May 07 Javascript
vue 解决无法对未定义的值,空值或基元值设置反应属性报错问题
Jul 31 Javascript
VueCli生产环境打包部署跨域失败的解决
Nov 13 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
2020年4月放送决定!第2期TV动画《邪神酱飞踢》视觉图&主题曲情报公开!
2020/03/06 日漫
php使用ob_start()实现图片存入变量的方法
2014/11/14 PHP
php上传文件并存储到mysql数据库的方法
2015/03/16 PHP
php结合web uploader插件实现分片上传文件
2016/05/10 PHP
thinkPHP中配置的读取与C方法详解
2016/12/05 PHP
Yii2框架实现数据库常用操作总结
2017/02/08 PHP
thinkPHP5.0框架安装教程
2017/03/25 PHP
浅析PHP数据导出知识点
2018/02/17 PHP
javascript onmouseout 解决办法
2010/07/17 Javascript
动态加载外部javascript文件的函数代码分享
2011/07/28 Javascript
JavaScript字符串插入、删除、替换函数使用示例
2013/07/25 Javascript
jquery win 7透明弹出层效果的简单代码
2013/08/06 Javascript
JS替换文本域内的回车示例
2014/02/18 Javascript
对new functionName()定义一个函数的理解
2014/05/22 Javascript
javascript学习笔记(五)原型和原型链详解
2014/10/08 Javascript
JavaScript中的getTime()方法使用详解
2015/06/10 Javascript
JS实现简单的图书馆享元模式实例
2015/06/30 Javascript
JavaScript比较当前时间是否在指定时间段内的方法
2016/08/02 Javascript
详解js静态资源文件请求的处理
2017/08/01 Javascript
详解vue2.0+vue-video-player实现hls播放全过程
2018/03/02 Javascript
async/await地狱该如何避免详解
2018/05/10 Javascript
Angular异步变同步处理方法
2018/08/13 Javascript
Python操作列表之List.insert()方法的使用
2015/05/20 Python
举例讲解如何在Python编程中进行迭代和遍历
2016/01/19 Python
python读csv文件时指定行为表头或无表头的方法
2019/06/26 Python
python 处理微信对账单数据的实例代码
2019/07/19 Python
用python拟合等角螺线的实现示例
2019/12/27 Python
selenium中get_cookies()和add_cookie()的用法详解
2020/01/06 Python
Python偏函数实现原理及应用
2020/11/20 Python
利用Python如何画一颗心、小人发射爱心
2021/02/21 Python
ghd澳大利亚官方网站:英国最受欢迎的美发工具品牌
2018/05/21 全球购物
艺术教育实施方案
2014/05/03 职场文书
食堂厨师岗位职责
2014/08/25 职场文书
四风个人对照检查材料思想汇报(办公室通用版)
2014/10/07 职场文书
个人典型事迹材料
2014/12/30 职场文书
高二化学教学反思
2016/02/22 职场文书