js 中的switch表達(dá)式使用示例
前言
switch 語句用于基于不同條件執(zhí)行不同動作。
JavaScript Switch 語句
請使用 switch 語句來選擇多個需被執(zhí)行的代碼塊之一。
switch(表達(dá)式) { case n: 代碼塊 break; case n: 代碼塊 break; default: 默認(rèn)代碼塊 }
代碼解釋:
計算一次 switch 表達(dá)式
把表達(dá)式的值與每個 case 的值進(jìn)行對比
如果存在匹配,則執(zhí)行關(guān)聯(lián)代碼
實(shí)例
getDay() 方法返回 0 至 6 之間的周名數(shù)字(weekday number)。
(Sunday=0, Monday=1, Tuesday=2 ..)
本例使用周名數(shù)字來計算周的名稱:
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)鍵詞,它會跳出 switch 代碼塊。
此舉將停止代碼塊中更多代碼的執(zhí)行以及 case 測試。
如果找到匹配,并完成任務(wù),則隨機(jī)中斷執(zhí)行(break)。無需更多測試。
break 能夠節(jié)省大量執(zhí)行時間,因?yàn)樗鼤昂雎浴?switch 代碼塊中的其他代碼的執(zhí)行。
不必中斷 switch 代碼塊中的最后一個 case。代碼塊在此處會自然結(jié)束。
default 關(guān)鍵詞
default 關(guān)鍵詞規(guī)定不存在 case 匹配時所運(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 代碼塊中最后一個 case:
實(shí)例
switch (new Date().getDay()) { default: text = "期待周末!"; break; case 6: text = "今天是周六"; break; case 0: text = "今天是周日"; }
如果 default 不是 switch 代碼塊中最后一個 case,請記得用 break 結(jié)束默認(rèn) case。
常見的代碼塊
有時您會需要不同的 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 匹配一個 case 值,則選擇第一個 case。
如果未找到匹配的 case,程序?qū)⒗^續(xù)使用默認(rèn) label。
如果未找到默認(rèn) label,程序?qū)⒗^續(xù) switch 后的語句。
嚴(yán)格的比較
Switch case 使用嚴(yán)格比較(===)。
值必須與要匹配的類型相同。
只有操作數(shù)屬于同一類型時,嚴(yán)格比較才能為 true。
在這個例子中,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 來得方便,來得清晰。
使用語法很簡單:
switch(n) { case 1: 執(zhí)行代碼塊 1 break; case 2: 執(zhí)行代碼塊 2 break; default: n 與 case 1 和 case 2 不同時執(zhí)行的代碼 }
各種語言的使用基本類似。
需要特別提出的時,在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>
邏輯很簡單, 代碼很簡單。 直接使用string 來區(qū)分。
Case 對應(yīng)的條件值也是變量
如果case 后面對應(yīng)的不是一個字符串,而是一個變量的話??梢越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 指令簡單示例
- javascript中if和switch,==和===詳解
- JavaScript中switch語句的用法詳解
- js switch case default 的用法示例介紹
- JavaScript switch語句使用方法簡介
相關(guān)文章
JS實(shí)現(xiàn)自定義簡單網(wǎng)頁軟鍵盤效果代碼
這篇文章主要介紹了JS實(shí)現(xiàn)自定義簡單網(wǎng)頁軟鍵盤效果代碼,可實(shí)現(xiàn)簡單模擬鍵盤布局及響應(yīng)鼠標(biāo)點(diǎn)擊按下鍵盤按鍵功能,簡單實(shí)用,具有一定參考借鑒價值,需要的朋友可以參考下2015-11-11JS遍歷數(shù)組和對象的區(qū)別及遞歸遍歷對象、數(shù)組、屬性的方法詳解
本文給大家js遍歷數(shù)組和遍歷對象的區(qū)別,一般來說for用來遍歷數(shù)組對象而for-in用來遍歷非數(shù)組對象。接下來小編給大家?guī)砹薺s遍歷數(shù)組和對象的區(qū)別及js遞歸遍歷對象、數(shù)組、屬性的方法詳解,一起看下吧2016-06-06echarts中幾種漸變方式的具體實(shí)現(xiàn)方式
在使用echarts繪制圖表時,有的時候需要使用漸變色,下面這篇文章主要給大家介紹了關(guān)于echarts中幾種漸變方式的具體實(shí)現(xiàn)方式,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11livereload工具實(shí)現(xiàn)前端可視化開發(fā)【推薦】
本文將介紹一個工具--livereload。這是一款能根據(jù)你本地文件(html、css、js)的變化,自動跟蹤刷新瀏覽器的實(shí)時刷新工具,有了這個工具,會大大減輕你刷新頁面的工作量。下面跟著小編一起來看下吧2016-12-12