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中使用的是全等匹配模式,特别是数字与字符串匹配的时候需要注意的一个问题
相关推荐
-
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用法注意事项分析
本文实例分析了javascript的switch用法注意事项.分享给大家供大家参考.具体分析如下: 先来看以下代码: <script> var t_jb51_net = 65; switch (t_jb51_net) { case '65': alert("字符串65.jb51.net"); break; } </script> 你会发现没有弹出对话框,alert没有执行. 原因分析: 这里需要明确的是,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
-
javascript 从if else 到 switch case 再到抽象
我的答案是,超过两个 else 的 if ,或者是超过两个 case 的 switch .可是在代码中大量使用 if else 和 switch case 是很正常的事情吧?错!绝大多数分支超过两个的 if else 和 switch case 都不应该以硬编码( hard-coded )的形式出现. 复杂分支从何而来 首先我们要讨论的第一个问题是,为什么遗留代码里面往往有那么多复杂分支.这些复杂分支在代码的首个版本中往往是不存在的,假设做设计的人还是有点经验的话,他应该预见将来可能需要进行扩展
-
javascript中if和switch,==和===详解
今天改插件BoxScroll的时候,因为if里面的条件判断多于两个,于是立马想着改写switch.改到一半,忽然记起来JSHint等代码质量检测工具中的一个要求,用===替换==,不用不可靠的强制转型.然后忽然猜想,改成switch是不是会降低效率啊?switch里面的实际判断是==还是===? 有了想法,赶紧举个栗子,好一口吃掉: var a = '5'; switch (a) { case 5: console.log('=='); break; case "5": console
-
Javascript基础教程之switch语句
stwith语句的格式一般如下: 复制代码 代码如下: switch (expression){ case value :statement1 break; case value2 :statement2 break; .... case value: statement break; default :statement; 每个情况表示如果expression的值等于case ,则执
-
JavaScript Switch 声明
JavaScript中的条件声明用于完成基于不同条件的行为. JavaScript Switch 声明 如果希望选择执行若干代码块中的一个,你可以使用switch声明: 语法: 复制代码 代码如下: switch(n) { case 1: 执行代码块 1 break case 2: 执行代码块 2 break default: 如果n即不是1也不是2,则执行此代码 } 工作原理:switch后面的
-
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语句的用法详解
可以使用多个if... else if语句,如前面的章节,执行多路分支.然而,这并不总是最佳的解决方案,尤其是当所有分支的依赖单一的变量的值. 使用JavaScript1.2开始,你可以用它处理的正是这种情况,使用一个switch语句,它这样做更有效,如果不是反复地使用if... else if语句. 语法 switch语句的基本语法给出一个expression ,以评估计算几种不同的语句基于该表达式的值来执行.解释器检查对表达式的值的每一种情况,直到找到一个匹配.如果没有匹配,则缺省(defa
-
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
随机推荐
- 看别人怎么查QQ聊天记录 比较详细查询QQ聊天记录的方法?
- ajax分页查询详解
- sql server 2008 忘记sa密码的解决方法
- 安装SQL2005时出现的版本变更检查SKUUPGRADE=1问题的解决方法
- Spring MVC中Ajax实现二级联动的简单实例
- Java8 Lambda表达式详解及实例
- iphone的safari浏览器中实现全屏浏览的方法
- Java随机生成手机短信验证码的方法
- IOS 详解socket编程[oc]粘包、半包处理
- ThinkPHP让../Public在模板不解析(直接输出)的方法 原创
- 实现获取http内容的php函数分享
- JDBCTM 指南:入门5 - ResultSet
- 在JavaScript中使用timer示例
- javascript实现带节日和农历的日历特效
- 把excel表格里的数据导入sql数据库的两种方法
- JavaScript头像上传插件源码分享
- 浅谈Javascript中深复制
- Google Adsense 支票托收信息收集 (1-30-2007)
- Android 应用按返回键退向后台运行实例代码
- Java中继承、多态、重载和重写介绍