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语句
stwith语句的格式一般如下: 复制代码 代码如下: switch (expression){ case value :statement1 break; case value2 :statement2 break; .... case value: statement break; default :statement; 每个情况表示如果expression的值等于case ,则执
-
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中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 )的形式出现. 复杂分支从何而来 首先我们要讨论的第一个问题是,为什么遗留代码里面往往有那么多复杂分支.这些复杂分支在代码的首个版本中往往是不存在的,假设做设计的人还是有点经验的话,他应该预见将来可能需要进行扩展
-
javascript中if和switch,==和===详解
今天改插件BoxScroll的时候,因为if里面的条件判断多于两个,于是立马想着改写switch.改到一半,忽然记起来JSHint等代码质量检测工具中的一个要求,用===替换==,不用不可靠的强制转型.然后忽然猜想,改成switch是不是会降低效率啊?switch里面的实际判断是==还是===? 有了想法,赶紧举个栗子,好一口吃掉: var a = '5'; switch (a) { case 5: console.log('=='); break; case "5": console
-
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
-
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 声明
JavaScript中的条件声明用于完成基于不同条件的行为. JavaScript Switch 声明 如果希望选择执行若干代码块中的一个,你可以使用switch声明: 语法: 复制代码 代码如下: switch(n) { case 1: 执行代码块 1 break case 2: 执行代码块 2 break default: 如果n即不是1也不是2,则执行此代码 } 工作原理:switch后面的
随机推荐
- AngularJs实现聊天列表实时刷新功能
- JSP+MySQL实现网站的登录与注册小案例
- utf8和unicode编码究竟是什么关系?有何区别?
- oracle客户端PLSQL连接失败解决方法
- python异步任务队列示例
- Python的加密模块md5、sha、crypt使用实例
- PHP模板引擎Smarty中变量的使用方法示例
- Python内置函数之filter map reduce介绍
- 一个可交互的并发ping检测脚本
- C#中Invoke 和 BeginInvoke 的真正涵义
- mysql通过my.cnf修改默认字符集为utf-8的方法和注意事项
- 点击按钮或链接不跳转只刷新页面的脚本整理
- php 判断访客是否为搜索引擎蜘蛛的函数代码
- React中上传图片到七牛的示例代码
- MySql安装及登录详解
- c++ 完备的运行时类型信息(动态类型信息)
- 使用jquery.qrcode.min.js实现中文转化二维码
- WordPress中获取指定分类及其子分类下的文章数目
- Tomcat 7通过设置不同的端口部署两个项目
- 北邮计算机考研复试题的C语言解答精选