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 相关文章推荐
json 入门基础教程 推荐
Oct 31 Javascript
通过Javascript读取本地Excel文件内容的代码示例
Apr 08 Javascript
JavaScript设计模式之适配器模式介绍
Dec 28 Javascript
javascript面向对象之this关键词用法分析
Jan 13 Javascript
vue学习笔记之指令v-text && v-html && v-bind详解
May 12 Javascript
bootstrap时间控件daterangepicker使用方法及各种小bug修复
Oct 25 Javascript
Three.js基础学习教程
Nov 16 Javascript
jQuery图片加载失败替换默认图片方法汇总
Nov 29 jQuery
Angular 实现输入框中显示文章标签的实例代码
Nov 07 Javascript
JS函数动态传递参数的方法分析【基于arguments对象】
Jun 05 Javascript
vue-cli3自动消除console.log()的调试信息方式
Oct 21 Javascript
vue+swiper实现左右滑动的测试题功能
Oct 30 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 FLEA中二叉树数组的遍历输出
2012/09/26 PHP
PHP使用正则表达式清除超链接文本
2013/11/12 PHP
php表单文件iframe异步上传实例讲解
2017/07/26 PHP
php实现算术验证码功能
2018/12/05 PHP
打开超链需要“确认”对话框的方法
2007/03/08 Javascript
javascript 使td内容不换行不撑开
2012/11/29 Javascript
JS图片切换的具体方法(带缩略图版)
2013/11/12 Javascript
js中传递特殊字符(+,&)的方法
2014/01/16 Javascript
Ajax中解析Json的两种方法对比分析
2015/06/25 Javascript
RequireJS入门一之实现第一个例子
2015/09/30 Javascript
JS实现网页标题随机显示名人名言的方法
2015/11/03 Javascript
node.js中 stream使用教程
2016/08/28 Javascript
利用angularjs1.4制作的简易滑动门效果
2017/02/28 Javascript
vue.js实现含搜索的多种复选框(附源码)
2017/03/23 Javascript
jQuery实现radio第一次点击选中第二次点击取消功能
2017/05/15 jQuery
基于Bootstrap分页的实例讲解(必看篇)
2017/07/04 Javascript
JS扩展String.prototype.format字符串拼接的功能
2018/03/09 Javascript
Javascript 之封装(Package)
2018/09/14 Javascript
nodejs使用node-xlsx生成excel的方法示例
2019/08/22 NodeJs
es6数组之扩展运算符操作实例分析
2020/04/25 Javascript
在Python中用get()方法获取字典键值的教程
2015/05/21 Python
使用Python的Flask框架构建大型Web应用程序的结构示例
2016/06/04 Python
详解python itertools功能
2020/02/07 Python
HTML5制作3D爱心动画教程 献给女友浪漫的礼物
2014/11/05 HTML / CSS
党员年终民主评议的自我评价
2013/11/05 职场文书
酒店个人培训自我鉴定
2013/12/11 职场文书
中学教师教育感言
2014/02/21 职场文书
2014学年自我鉴定
2014/02/23 职场文书
联欢晚会主持词
2014/03/25 职场文书
学校安全工作汇报材料
2014/08/16 职场文书
纪检干部先进事迹材料
2014/08/23 职场文书
五一劳动节演讲稿
2014/09/12 职场文书
群众路线剖析材料
2014/09/30 职场文书
导游词之清晏园
2019/11/22 职场文书
python 通过使用Yolact训练数据集
2021/04/06 Python
js实现自动锁屏功能
2021/06/02 Javascript