JavaScript中switch判断容易犯错的一个细节
switch语句与if语句的关系最为密切,也是其它编程语言中普遍使用的一种流程控制语句,但switch的匹配是全等模式,如果不注意这个细节则写程序时往往会出错。
代码:
var n = '5'; switch(n){ case 5: alert('执行case分支'); break; default: alert('执行default分支'); }
结果:
可能很多人会误以为以上程序会走case分支,结果却走了default分支。难道它们两个不相等吗?我们使用if语句看看。
代码:
var n = '5'; if(n==5){ alert('真 分支'); }else{ alert('假 分支'); }
结果:
在if语句里可以匹配,但为何在switch语句里不能匹配呢?
这是因为在switch语句里的case使用全等模式,也就相当于if里的使用三个等号类似。我们把case的代码改写一下
代码:
var n = '5'; switch(n){ case '5': // 把原来的 case 5 改写成 case '5' alert('执行case分支'); break; default: alert('执行default分支'); }
结果:
改写了以后就能走case分支了,就像我们if里使用三个全等号一样
代码:
var n = '5'; if(n===5){ alert('真 分支'); }else{ alert('假 分支'); }
结果:
因为使用全等,所以字符串5不等于数字5,结果走了假分支。
由以上例子说明在 switch中使用的是全等匹配模式,特别是数字与字符串匹配的时候需要注意的一个问题
相关推荐
-
JavaScript Switch 声明
JavaScript中的条件声明用于完成基于不同条件的行为. JavaScript Switch 声明 如果希望选择执行若干代码块中的一个,你可以使用switch声明: 语法: 复制代码 代码如下: switch(n) { case 1: 执行代码块 1 break case 2: 执行代码块 2 break default: 如果n即不是1也不是2,则执行此代码 } 工作原理:switch后面的
-
js中switch case循环实例代码
复制代码 代码如下: switch (objNameType) { case 'PD': valueUD = obj.id; id = objName; var loadVUD = UserData.load(exam, id); if (loadVUD == null || loadVUD == undefined || loadVUD == '') { var tmpTGId = obj.id.substr(0, obj.id.indexOf('_')); qNoTotalD[qIdNoSt
-
js 中的switch表达式使用示例
前言 switch 这种表达式在很多语言中都有,比如java, C等待, 使用switch比使用if else 来得方便,来得清晰. 使用语法很简单: 复制代码 代码如下: switch(n) { case 1: 执行代码块 1 break; case 2: 执行代码块 2 break; default: n 与 case 1 和 case 2 不同时执行的代码 } 各种语言的使用基本类似. 需要特别提出的时,在java 1.6 及以下版本, 变量(n)只能是整型.在java 7 之后支持Str
-
JavaScript中switch语句的用法详解
可以使用多个if... else if语句,如前面的章节,执行多路分支.然而,这并不总是最佳的解决方案,尤其是当所有分支的依赖单一的变量的值. 使用JavaScript1.2开始,你可以用它处理的正是这种情况,使用一个switch语句,它这样做更有效,如果不是反复地使用if... else if语句. 语法 switch语句的基本语法给出一个expression ,以评估计算几种不同的语句基于该表达式的值来执行.解释器检查对表达式的值的每一种情况,直到找到一个匹配.如果没有匹配,则缺省(defa
-
javascript的switch用法注意事项分析
本文实例分析了javascript的switch用法注意事项.分享给大家供大家参考.具体分析如下: 先来看以下代码: <script> var t_jb51_net = 65; switch (t_jb51_net) { case '65': alert("字符串65.jb51.net"); break; } </script> 你会发现没有弹出对话框,alert没有执行. 原因分析: 这里需要明确的是,switch在判断的时候使用的是全等号"===&
-
javascript 从if else 到 switch case 再到抽象
我的答案是,超过两个 else 的 if ,或者是超过两个 case 的 switch .可是在代码中大量使用 if else 和 switch case 是很正常的事情吧?错!绝大多数分支超过两个的 if else 和 switch case 都不应该以硬编码( hard-coded )的形式出现. 复杂分支从何而来 首先我们要讨论的第一个问题是,为什么遗留代码里面往往有那么多复杂分支.这些复杂分支在代码的首个版本中往往是不存在的,假设做设计的人还是有点经验的话,他应该预见将来可能需要进行扩展
-
js switch case default 的用法示例介绍
复制代码 代码如下: switch(tagName){ case "span": node = element.parent().parent(); element = element; break; case "td": node = element.parent(); element = element.find("span"); break; default: node = element; break; } 以上语句等同于 if(tagN
-
javascript中if和switch,==和===详解
今天改插件BoxScroll的时候,因为if里面的条件判断多于两个,于是立马想着改写switch.改到一半,忽然记起来JSHint等代码质量检测工具中的一个要求,用===替换==,不用不可靠的强制转型.然后忽然猜想,改成switch是不是会降低效率啊?switch里面的实际判断是==还是===? 有了想法,赶紧举个栗子,好一口吃掉: var a = '5'; switch (a) { case 5: console.log('=='); break; case "5": console
-
switch语句的妙用(必看篇)
switch语句的普通用法很简单,如下: var a = 3; switch (a) { case 1: console.log(a); break; case 2: case 3: console.log(a); break; default: break; } 这里a和case列表中从上而下逐一做比较,如果匹配就执行case中的代码,若有break则跳出,无break则继续往下匹配,直到新的匹配和break或switch代码块结束. 注意: a和case值的匹配算法是执行严格相等比较的('=
-
Javascript基础教程之switch语句
stwith语句的格式一般如下: 复制代码 代码如下: switch (expression){ case value :statement1 break; case value2 :statement2 break; .... case value: statement break; default :statement; 每个情况表示如果expression的值等于case ,则执
随机推荐
- Flex中对表格中某列的值进行数字格式化保留两位小数
- java URL乱码的解决办法
- 漂亮! js实现颜色渐变效果
- 使用PHP破解防盗链图片的一个简单方法
- c# xml API操作的小例子
- Android模仿实现闲鱼首页的思路与方法
- MySQL正则表达式入门教程
- php引用传值实例详解学习
- jQuery实现的导航条切换可显示隐藏
- 羽毛球拍挑地上的球的技巧(捡球、挑球)
- mssql关于一个表格结构的另外一种显示(表达意思不变)
- jQuery $.each的用法说明
- 谈谈对jquery ui tabs 的理解
- javascript使用百度地图api和html5特性获取浏览器位置
- JS跨域问题详解
- JavaScript-定时器0~9抽奖系统详解(代码)
- 探索Emberjs制作一个简单的Todo应用
- autorun.inf和sbl.exe之U盘病毒的清除方法
- 利用SurfaceView实现下雨与下雪动画效果详解(Kotlin语法)
- 解析Android开发中多点触摸的实现方法