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 相关文章推荐
xmlHTTP实例
Oct 24 Javascript
Js+Dhtml:WEB程序员简易开发工具包(预先体验版)
Nov 07 Javascript
jquery网页元素拖拽插件效果及实现
Aug 05 Javascript
防止按钮在短时间内被多次点击的方法
Mar 10 Javascript
jQuery淡入淡出元素让其效果更为生动
Sep 01 Javascript
基于jquery实现鼠标左右拖动滑块滑动附源码下载
Dec 23 Javascript
javascript监听页面刷新和页面关闭事件方法详解
Jan 09 Javascript
canvas知识总结
Jan 25 Javascript
bootstrap基本配置_动力节点Java学院整理
Jul 14 Javascript
Vue-Quill-Editor富文本编辑器的使用教程
Sep 21 Javascript
原生JS实现留言板
Mar 26 Javascript
微信小程序开发(三):返回上一级页面并刷新操作示例【页面栈】
Jun 01 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
短波的认识
2021/03/01 无线电
模仿OSO的论坛(二)
2006/10/09 PHP
相对路径转化成绝对路径
2007/04/10 PHP
php join函数应用
2011/05/04 PHP
php编程实现获取excel文档内容的代码实例
2011/06/28 PHP
php设计模式之委托模式
2016/02/13 PHP
ExtJS 2.0 实用简明教程之布局概述
2009/04/29 Javascript
JS数学函数Exp使用说明
2012/08/09 Javascript
setInterval计时器不准的问题解决方法
2014/05/08 Javascript
jQuery实现页面内锚点平滑跳转特效的方法总结
2015/05/11 Javascript
angular实现form验证实例代码
2017/01/17 Javascript
常用jQuery选择器汇总
2017/02/02 Javascript
微信小程序自动客服功能
2017/11/02 Javascript
Windows下Node爬虫神器Puppeteer安装记
2019/01/09 Javascript
js实现继承的方法及优缺点总结
2019/05/08 Javascript
jQuery实现input[type=file]多图预览上传删除等功能
2019/08/02 jQuery
原生JS实现留言板功能
2020/02/08 Javascript
python创建只读属性对象的方法(ReadOnlyObject)
2013/02/10 Python
python之wxPython应用实例
2014/09/28 Python
python中PIL安装简单教程
2016/04/21 Python
Python实现基于KNN算法的笔迹识别功能详解
2018/07/09 Python
python Django编写接口并用Jmeter测试的方法
2019/07/31 Python
python或C++读取指定文件夹下的所有图片
2019/08/31 Python
使用pandas实现连续数据的离散化处理方式(分箱操作)
2019/11/22 Python
tensorflow 环境变量设置方式
2020/02/06 Python
详解python中的闭包
2020/09/07 Python
python中Mako库实例用法
2020/12/31 Python
基于Modernizr 让网站进行优雅降级的分析
2013/04/21 HTML / CSS
Boden美国官网:英伦原创时装品牌
2017/07/03 全球购物
瑞典的玛丽小姐:Miss Mary of Sweden
2019/02/13 全球购物
美国伴娘礼服商店:Evening Collective
2019/10/07 全球购物
国际贸易专业个人求职信格式
2014/02/02 职场文书
物业保洁员岗位职责
2015/02/13 职场文书
2015年幼儿园中班下学期工作总结
2015/05/22 职场文书
用Python创建简易网站图文教程
2021/06/11 Python
使用Java去实现超市会员管理系统
2022/03/18 Java/Android