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)類似。我們把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中判斷一個(gè)值是否在數(shù)組中并沒(méi)有直接使用
在JS中要判斷一個(gè)值是否在數(shù)組中并沒(méi)有函數(shù)直接使用,如PHP中就有in_array()這個(gè)函數(shù),可以寫(xiě)一個(gè)類似in_array()函數(shù)功能的方法2012-12-12
JavaScript中匿名、命名函數(shù)的性能測(cè)試
這篇文章主要介紹了JavaScript中匿名、命名函數(shù)的性能測(cè)試,簡(jiǎn)單來(lái)講匿名即沒(méi)有名字的函數(shù),它和命名函數(shù)相比性能如何呢,本文即是對(duì)它們性能的測(cè)試,需要的朋友可以參考下2014-09-09
深入解析contentWindow, contentDocument
沒(méi)有永恒的技術(shù)只有需求,沒(méi)有好說(shuō)的客戶只有無(wú)奈的開(kāi)發(fā)者,如果iframe的出現(xiàn)是一個(gè)錯(cuò)誤的話,iframe里邊在來(lái)一個(gè)iframe那是錯(cuò)上加錯(cuò),神話沒(méi)有在遠(yuǎn)古的塵囂中消失,卻在懷具的今天不斷上演2013-07-07
簡(jiǎn)單實(shí)現(xiàn)異步編程promise模式
本篇文章主要介紹了異步編程promise模式的簡(jiǎn)單實(shí)現(xiàn),并對(duì)每一步進(jìn)行了分析,需要的朋友可以參考下2015-07-07
JavaScript面向?qū)ο笾甤lass繼承類案例講解
這篇文章主要介紹了JavaScript面向?qū)ο笾甤lass繼承類案例講解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08
js鼠標(biāo)點(diǎn)擊事件在各個(gè)瀏覽器中的寫(xiě)法及Event對(duì)象屬性介紹
各個(gè)主流瀏覽器德鼠標(biāo)點(diǎn)擊事件,方便使用時(shí)查詢,整理還算是很詳細(xì)吧,感興趣的你可以參考下啊,希望本文對(duì)你有所幫助2013-01-01
JavaScript中構(gòu)造函數(shù)與原型鏈之間的關(guān)系詳解
在本篇文章里小編給大家分享了關(guān)于JavaScript中構(gòu)造函數(shù)與原型鏈之間的關(guān)系相關(guān)知識(shí)點(diǎn),需要的朋友們學(xué)習(xí)下。2019-02-02

