JavaScript switch 语句
发布时间:2023-03-08 13:18:34 所属栏目:教程 来源:
导读:switch 语句评估一个表达式,将表达式的值与case子句匹配,并执行与该情况相关联的语句。
switch 是另一种控制流程的方式,根据条件执行不同的代码块。
能用 switch 实现的都可以用 if 实现。
1. 基本语法
switch 是另一种控制流程的方式,根据条件执行不同的代码块。
能用 switch 实现的都可以用 if 实现。
1. 基本语法
|
switch 语句评估一个表达式,将表达式的值与case子句匹配,并执行与该情况相关联的语句。 switch 是另一种控制流程的方式,根据条件执行不同的代码块。 能用 switch 实现的都可以用 if 实现。 1. 基本语法 switch (表达式) { case 表达式结果为值的时候: 做的事情; break; case 表达式结果为值的时候: 做的事情; break; case ...: 做的事情; break; case 表达式结果为值n的时候: 做的事情; break; default: 上面一个情况都没中的时候做的事情; } switch 语句在执行的时候会先接受一个表达式,最后根据表达式的结果进行条件的匹配,即 case 后面的值。 var num = ; switch (num + ) { case : console.log('case的值是2'); break; case : console.log('case的值是3'); break; case : console.log('case的值是4'); case : console.log('case的值是5'); default: console.log('没有匹配到值'); } num 为 3 ,所以加上 1 之后为 4 ,case 匹配到的就是 4 ,所以输出了case的值是4,但是紧接着后面的case的值是5与没有匹配到值也被输出了。 这是因为分支内碰到 break 才会中断执行,如果不中断,即便后面的条件不匹配了,里面的代码块还是会被继续执行。 需要注意的是 case 后面的值与表达式的结果在比较的时候是使用严格相等(===)的。 2. default 的位置可以不固定 default 不一定要写在末尾,但通常推荐写在末尾。 switch ( > ) { default: console.log('我是default'); case true: console.log('1 不可能大于 2,肯定是代码写错了'); break; } 在所有case都不匹配的时候,就会回去走 default 。 需要注意的是,default 语句块里也需要加 break ,不然会继续往下执行,直至碰到 break ,大部分情况下只有末尾的分支不需要加 break ,因为已经是最后一个分支了。 3. 灵活使用 break switch 语句与 break 的特性结合可以很灵活。 如以下场景: 服务端返回了用户信息,当用户的 VIP 等级为 1、2、3 的时候,显示初级VIP,VIP 等级为 4、5 的时候,显示中级 VIP,当 VIP 等级为 6 的时候,显示高级 VIP,否则显示普通会员。 var user = { vip: }; switch (user.vip) { case : case : case : console.log('初级vip'); break; case : case : console.log('中级vip'); break; case : console.log('高级vip'); break; default: console.log('普通会员'); } // 输出:"初级vip" 利用没有 break 就会往下执行的特点,可以给条件归类。相比 if 语句,使用 switch 有更强的表现力。 页面中有一排图片,共 4 张,当用户选择了某一张后,隐藏这张图片前面的所有图片,取消选择后显示所有图片。 function showImage(index) { console.log('显示第' + index + '图片'); } function hideAllImage() { console.log('先隐藏所有图片'); } // 点击事件 function event(e) { var selected = e.index; // 0表示没有选择 1表示选择第一张 以此类推 hideAllImage(); switch (selected) { default: case : showImage(); case : showImage(); case : showImage(); case : showImage(); } } event({ index: }); 其实这个需求,使用 switch 并不是最适合的场景,假如图片一多,上百上千张,这种方式就显得有些愚蠢了。 这提供这种实现方式不是为了显示他有多好,而是为了能在思考问题的时候,可以想到有这样的方案,来评判是不是更适合现有业务场景。 (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
