JavaScript中switch判斷容易犯錯(cuò)的一個(gè)細(xì)節(jié)
switch語(yǔ)句與if語(yǔ)句的關(guān)系最為密切,也是其它編程語(yǔ)言中普遍使用的一種流程控制語(yǔ)句,但switch的匹配是全等模式,如果不注意這個(gè)細(xì)節(jié)則寫(xiě)程序時(shí)往往會(huì)出錯(cuò)。
代碼:
var n = '5'; switch(n){ case 5: alert('執(zhí)行case分支'); break; default: alert('執(zhí)行default分支'); }
結(jié)果:
可能很多人會(huì)誤以為以上程序會(huì)走case分支,結(jié)果卻走了default分支。難道它們兩個(gè)不相等嗎?我們使用if語(yǔ)句看看。
代碼:
var n = '5'; if(n==5){ alert('真 分支'); }else{ alert('假 分支'); }
結(jié)果:
在if語(yǔ)句里可以匹配,但為何在switch語(yǔ)句里不能匹配呢?
這是因?yàn)樵趕witch語(yǔ)句里的case使用全等模式,也就相當(dāng)于if里的使用三個(gè)等號(hào)類(lèi)似。我們把case的代碼改寫(xiě)一下
代碼:
var n = '5'; switch(n){ case '5': // 把原來(lái)的 case 5 改寫(xiě)成 case '5' alert('執(zhí)行case分支'); break; default: alert('執(zhí)行default分支'); }
結(jié)果:
改寫(xiě)了以后就能走case分支了,就像我們if里使用三個(gè)全等號(hào)一樣
代碼:
var n = '5'; if(n===5){ alert('真 分支'); }else{ alert('假 分支'); }
結(jié)果:
因?yàn)槭褂萌龋宰址?不等于數(shù)字5,結(jié)果走了假分支。
由以上例子說(shuō)明在 switch中使用的是全等匹配模式,特別是數(shù)字與字符串匹配的時(shí)候需要注意的一個(gè)問(wèn)題
- javascript中if和switch,==和===詳解
- JavaScript中switch語(yǔ)句的用法詳解
- javascript的switch用法注意事項(xiàng)分析
- Javascript基礎(chǔ)教程之switch語(yǔ)句
- javascript使用switch case實(shí)現(xiàn)動(dòng)態(tài)改變超級(jí)鏈接文字及地址
- js中switch case循環(huán)實(shí)例代碼
- JS性能優(yōu)化實(shí)現(xiàn)方法及優(yōu)點(diǎn)進(jìn)行
- js 函數(shù)性能比較方法
- 實(shí)現(xiàn)高性能javascript的注意事項(xiàng)
- 你可能不需要在JavaScript使用switch語(yǔ)句
相關(guān)文章
深入理解JavaScript系列(39):設(shè)計(jì)模式之適配器模式詳解
這篇文章主要介紹了深入理解JavaScript系列(39):設(shè)計(jì)模式之適配器模式詳解,適配器模式(Adapter)是將一個(gè)類(lèi)(對(duì)象)的接口(方法或?qū)傩裕┺D(zhuǎn)化成客戶希望的另外一個(gè)接口(方法或?qū)傩裕?需要的朋友可以參考下2015-03-03JavaScript 學(xué)習(xí)筆記(十三)Dom創(chuàng)建表格
下面弄個(gè)實(shí)例,運(yùn)用Dom的知識(shí),實(shí)例操作。2010-01-01在firefox和Chrome下關(guān)閉瀏覽器窗口無(wú)效的解決方法
首先IE是可以通過(guò)window.close()來(lái)關(guān)閉瀏覽器窗口的,但是在firefox和Chrome下是無(wú)效的,但是可以通過(guò)一些特殊的手段進(jìn)行關(guān)閉2014-01-01老生常談 關(guān)于JavaScript的類(lèi)的繼承
下面小編就為大家?guī)?lái)一篇老生常談 關(guān)于JavaScript的類(lèi)的繼承。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06JavaScript中g(shù)etUTCSeconds()方法的使用詳解
這篇文章主要介紹了JavaScript中g(shù)etUTCSeconds()方法的使用詳解,是JS入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-06-06javascript下判斷一個(gè)對(duì)象是否具有指定名稱(chēng)的屬性的的代碼
hasOwnProperty 方法 返回一個(gè)布爾值,指出一個(gè)對(duì)象是否具有指定名稱(chēng)的屬性。2010-01-01javascript設(shè)計(jì)模式之對(duì)象工廠函數(shù)與構(gòu)造函數(shù)詳解
這篇文章主要介紹了javascript設(shè)計(jì)模式之對(duì)象工廠函數(shù)與構(gòu)造函數(shù)詳解,使用對(duì)象字面量,或者向空對(duì)象中動(dòng)態(tài)地添加新成員,是最簡(jiǎn)單易用的對(duì)象創(chuàng)建方法,除了這兩種常用的對(duì)象創(chuàng)建方式,JavaScript還提供了其他方法創(chuàng)建對(duì)象,需要的朋友可以參考下2015-07-07