最近开发中遇到一个坑,就是判断 input 中value带的值 “1”,“2”,“3”,“4” 走swich判断时,一直出错,老是走不进判断里面,明明给的值都是1 ,2, 3,4........... 经过十几分钟的苦逼排错,终于发现了症结所在 switch语句与if语句的关系最为密切,也是其它编程语言中普遍使用的一种流程控制语句,但switch的匹配是全等模式,如果不注意这个细节则写程序时往往会出错。 代码: var n = '5'; switch(n){ case 5: alert('执行case分支'); break; default: alert('执行default分支'); } 结果:
可能很多人会误以为以上程序会走case分支,结果却走了default分支。 这是因为在switch语句里的case使用全等模式,也就相当于if里的使用三个等号类似。我们把case的代码改写一下 代码: var n = '5'; switch(n){ case '5': // 把原来的 case 5 改写成 case '5' alert('执行case分支'); break; default: alert('执行default分支'); } 结果:
改写了以后就能走case分支了,就像我们if里使用三个全等号一样 由以上例子说明在switch中使用的是全等匹配模式,特别是数字与字符串匹配的时候需要注意的一个问题 |