js 中的switch表達(dá)式使用示例
前言
switch 語句用于基于不同條件執(zhí)行不同動(dòng)作。
JavaScript Switch 語句
請(qǐng)使用 switch 語句來選擇多個(gè)需被執(zhí)行的代碼塊之一。
switch(表達(dá)式) {
case n:
代碼塊
break;
case n:
代碼塊
break;
default:
默認(rèn)代碼塊
}
代碼解釋:
計(jì)算一次 switch 表達(dá)式
把表達(dá)式的值與每個(gè) case 的值進(jìn)行對(duì)比
如果存在匹配,則執(zhí)行關(guān)聯(lián)代碼
實(shí)例
getDay() 方法返回 0 至 6 之間的周名數(shù)字(weekday number)。
(Sunday=0, Monday=1, Tuesday=2 ..)
本例使用周名數(shù)字來計(jì)算周的名稱:
switch (new Date().getDay()) {
case 0:
day = "星期天";
break;
case 1:
day = "星期一";
break;
case 2:
day = "星期二";
break;
case 3:
day = "星期三";
break;
case 4:
day = "星期四";
break;
case 5:
day = "星期五";
break;
case 6:
day = "星期六";
}
結(jié)果將是:
今天是星期三
break 關(guān)鍵詞
如果 JavaScript 遇到 break 關(guān)鍵詞,它會(huì)跳出 switch 代碼塊。
此舉將停止代碼塊中更多代碼的執(zhí)行以及 case 測(cè)試。
如果找到匹配,并完成任務(wù),則隨機(jī)中斷執(zhí)行(break)。無需更多測(cè)試。
break 能夠節(jié)省大量執(zhí)行時(shí)間,因?yàn)樗鼤?huì)“忽略” switch 代碼塊中的其他代碼的執(zhí)行。
不必中斷 switch 代碼塊中的最后一個(gè) case。代碼塊在此處會(huì)自然結(jié)束。
default 關(guān)鍵詞
default 關(guān)鍵詞規(guī)定不存在 case 匹配時(shí)所運(yùn)行的代碼:
實(shí)例
getDay() 方法返回 0 至 6 的數(shù)字周名。
如果今日既不是周六(6)也不是周日(0),則輸出一段默認(rèn)消息:
switch (new Date().getDay()) {
case 6:
text = "今天是周六";
break;
case 0:
text = "今天是周日";
break;
default:
text = "期待周末~";
}
text 的結(jié)果是:
期待周末~
默認(rèn)的 case 不必是 switch 代碼塊中最后一個(gè) case:
實(shí)例
switch (new Date().getDay()) {
default:
text = "期待周末!";
break;
case 6:
text = "今天是周六";
break;
case 0:
text = "今天是周日";
}
如果 default 不是 switch 代碼塊中最后一個(gè) case,請(qǐng)記得用 break 結(jié)束默認(rèn) case。
常見的代碼塊
有時(shí)您會(huì)需要不同的 case 來使用相同的代碼。
在本例中,case 4 和 5 分享相同的代碼塊,而 0 和 6 分享另一段代碼塊:
實(shí)例
switch (new Date().getDay()) {
case 4:
case 5:
text = "周末快到了:)";
break;
case 0:
case 6:
text = "今天是周末~";
break;
default:
text = "期待周末!";
}
Switching 的細(xì)節(jié)
如果多種 case 匹配一個(gè) case 值,則選擇第一個(gè) case。
如果未找到匹配的 case,程序?qū)⒗^續(xù)使用默認(rèn) label。
如果未找到默認(rèn) label,程序?qū)⒗^續(xù) switch 后的語句。
嚴(yán)格的比較
Switch case 使用嚴(yán)格比較(===)。
值必須與要匹配的類型相同。
只有操作數(shù)屬于同一類型時(shí),嚴(yán)格比較才能為 true。
在這個(gè)例子中,x 將不匹配:
實(shí)例
var x = "0";
switch (x) {
case 0:
text = "Off";
break;
case 1:
text = "On";
break;
default:
text = "No value found";
}
語法switch 這種表達(dá)式在很多語言中都有,比如java, C等待, 使用switch比使用if else 來得方便,來得清晰。
使用語法很簡(jiǎn)單:
switch(n)
{
case 1:
執(zhí)行代碼塊 1
break;
case 2:
執(zhí)行代碼塊 2
break;
default:
n 與 case 1 和 case 2 不同時(shí)執(zhí)行的代碼
}
各種語言的使用基本類似。
需要特別提出的時(shí),在java 1.6 及以下版本, 變量(n)只能是整型。在java 7 之后支持String類型了。
在js 中, 是可以直接使用String 類型。
使用實(shí)例
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Author" CONTENT="oscar999">
<script>
function funcSwitch(sFlag)
{
switch(sFlag)
{
case "Test1":
alert("Test1");
break;
case "Test2":
alert("Test2");
break;
default:;
}
}
funcSwitch("Test2");
</script>
</HEAD>
<BODY>
</BODY>
</HTML>
邏輯很簡(jiǎn)單, 代碼很簡(jiǎn)單。 直接使用string 來區(qū)分。
Case 對(duì)應(yīng)的條件值也是變量
如果case 后面對(duì)應(yīng)的不是一個(gè)字符串,而是一個(gè)變量的話??梢越Y(jié)合RegExp 達(dá)成。
<!--Add by oscar999-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Author" CONTENT="oscar999">
<script>
var str1 = "Test1";
var str2 = "Test1";
function funcSwitch(sFlag)
{
var regExp = new RegExp(sFlag);
switch(true)
{
case regExp.test(str1):
alert("Test1");
break;
case regExp.test(str2):
alert("Test2");
break;
default:;
}
}
funcSwitch("Test1");
</script>
</HEAD>
<BODY>
</BODY>
</HTML>
- JS中比Switch...Case更優(yōu)雅的多條件判斷寫法
- mui js控制開關(guān)狀態(tài)、修改switch開關(guān)的值方法
- layui--js控制switch的切換方法
- JS switch判斷 三目運(yùn)算 while 及 屬性操作代碼
- Angular.JS中指令ng-if、ng-show/ng-hide和ng-switch的使用教程
- AngularJS基礎(chǔ) ng-switch 指令簡(jiǎn)單示例
- javascript中if和switch,==和===詳解
- JavaScript中switch語句的用法詳解
- js switch case default 的用法示例介紹
- JavaScript switch語句使用方法簡(jiǎn)介
相關(guān)文章
javascript中內(nèi)置對(duì)象Math的介紹及用法案例
Math對(duì)象是一個(gè)內(nèi)置對(duì)象,具有數(shù)學(xué)常數(shù)和函數(shù)的屬性和方法,不是一個(gè)函數(shù)對(duì)象,下面這篇文章主要給大家介紹了關(guān)于javascript中內(nèi)置對(duì)象Math的介紹及用法案例的相關(guān)資料,需要的朋友可以參考下2022-03-03
js canvas實(shí)現(xiàn)放大鏡查看圖片功能
這篇文章主要為大家詳細(xì)介紹了js canvas實(shí)現(xiàn)放大鏡查看圖片功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
ant-design-pro?的EditableProTable表格驗(yàn)證調(diào)用的實(shí)現(xiàn)代碼
這篇文章主要介紹了ant-design-pro?的EditableProTable表格驗(yàn)證調(diào)用,這里的需求是點(diǎn)擊外部的保存要對(duì)整個(gè)表單進(jìn)行驗(yàn)證,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06
JavaScript是否可實(shí)現(xiàn)多線程 深入理解JavaScript定時(shí)機(jī)制
JavaScript的setTimeout與setInterval是兩個(gè)很容易欺騙別人感情的方法,因?yàn)槲覀冮_始常常以為調(diào)用了就會(huì)按既定的方式執(zhí)行, 我想不少人都深有同感,2009-12-12
微信 jssdk 簽名錯(cuò)誤invalid signature的解決方法
這篇文章主要介紹了微信 jssdk 簽名錯(cuò)誤invalid signature的解決方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-01-01
ECharts坐標(biāo)軸刻度數(shù)值處理方法例子
這篇文章主要給大家介紹了關(guān)于ECharts坐標(biāo)軸刻度數(shù)值處理的相關(guān)資料,文章介紹了一個(gè)用于圖表Y軸數(shù)值簡(jiǎn)寫的函數(shù),它可以將大數(shù)值轉(zhuǎn)換為K、M、B等簡(jiǎn)寫形式,從而使圖表更加美觀和易讀,需要的朋友可以參考下2024-11-11

