switch写法详解
我们在开发项目中经常遇到对数据的判断进行相应的逻辑(if..else ,三元运算等),Switch 语句用来选择多个需要执行的代码块 ,一定程度上简化了if....else
1. 语法
switch(表达式) {
case n:
代码块
break;
case n:
代码块
break;
default:
默认代码块
}
2. 代码解释
计算一次 switch 表达式
把表达式的值与每个 case 的值进行对比
如果存在匹配,则执行关联代码
3. break 关键词
如果 JavaScript 遇到 break 关键词,它会跳出 switch 代码块。不必中断 switch 代码块中的最后一个 case。代码块在此处会自然结束。
4. default 关键词
default 关键词规定不存在 case 匹配时所运行的代码。
default 不必是 switch 代码块中最后一个 case。
如果 default 不是 switch 代码块中最后一个 case,请记得用 break 结束默认 case。
default 是可选的,并非必不可少(虽然惯例如此)。break 相关规则对 default 仍
然适用。
5. 严格的比较
Switch case 使用严格比较(===)。值必须与要匹配的类型相同。只有操作数属于同一类型时,严格比较才能为 true。
function demo(param) {
switch (param) {
case '1':
console.log('1')
break
case '2':
console.log('2')
break
default:
console.log('default')
}
} demo('2') // 2
demo(2) // default
demo(new String('2')) // default
let o1 = {}
let o2 = {}
let o3 = {}
let o4 = o3 function demo (o) {
switch (o) {
case o1:
console.log('o1')
break
case o2:
console.log('o2')
break
case o3:
console.log('o3')
break
default:
console.log('default')
}
} demo(o1) // o1
demo(o3) // o3
demo(o4) // o3
6. case后接表达式
function demo (param) {
switch (true) {
case param == '1':
console.log('1')
break
case param == '2':
console.log('2')
break
default:
console.log('default')
}
} demo (1) // 1
demo ('1') // 1
demo (2) // 2
function demo () {
switch (3) {
case 1 + 1:
console.log('1 + 1')
break
case 1 + 2:
console.log('1 + 2')
break
case 1 + 3:
console.log('1 + 3')
break
default:
console.log('default')
}
} demo() // 1 + 2
function demo (a, b) {
switch (a) {
case b + 1:
console.log('b + 1')
break
case b + 2:
console.log('b + 2')
break
case b + 3:
console.log('b + 3')
break
default:
console.log('default')
}
} demo(3, 1) // b + 2
demo(4, 1) // b + 3
demo(4, 2) // b + 2
demo(4, 4) // default
7. 表达式中的严格相等(重点五颗星)
function demo () {
let a = 'hello'
let b = '10' switch (true) {
case (a || b == 10):
console.log('1')
break
default:
console.log('default')
}
} // a || b == 10 的值为 hello,和 true 不严格相等
demo() // default
function demo () {
let a = 'hello'
let b = '10' switch (true) {
case !!(a || b == 10):
console.log('1')
break
default:
console.log('default')
}
} demo() // 1
switch写法详解的更多相关文章
- Flex布局新旧混合写法详解(兼容微信)
原文链接:https://www.usblog.cc/blog/post/justzhl/Flex布局新旧混合写法详解(兼容微信) flex是个非常好用的属性,如果说有什么可以完全代替 float 和 ...
- linux系统初始化——sysinit文件写法详解
sysinit文件写法详解 sysinit文件是linux初始化文件系统时执行的第一个脚本文件.它主要做在各个运行级别中进行初始化工作,包括: 启动交换分区;检查磁盘;设置主机名;检查并挂载文件系统; ...
- Flex 布局新旧混合写法详解(兼容微信)
flex 是个非常好用的属性,如果说有什么可以完全代替 float 和 position ,那么肯定是非它莫属了(虽然现在还有很多不支持 flex 的浏览器).然而国内很多浏览器对 flex 的支持都 ...
- “makefile”写法详解,一步一步写一个实用的makefile,详解 sed 's,$∗\.o[ :]*,\1.o $@ : ,g' < $@.
目的:编写一个实用的makefile,能自动编译当前目录下所有.c/.cpp源文件,支持二者混合编译.并且当某个.c/.cpp..h或依赖的源文件被修改后,仅重编涉及到的源文件,未涉及的不编译. 二要 ...
- 我的c++学习(5)switch语句详解
#include "stdafx.h" #include<iostream> using namespace std; #include<iomanip> ...
- SVN switch 用法详解
一直知道SVN有个switch命令,但是对它的介绍教程却很少,大多是生硬的svn帮助文档里的文字,从而一直不怎么会用.今天看了这篇文章,突觉豁然开朗,整理下来以备查阅. 使用SVN,自然是需要与别人合 ...
- jquery 中 (function( window, undefined ) {})(window)写法详解(转)
最常见的闭包 (Closure) 范式大家都很熟悉了: 123 (function() {// ...})(); 很简单,大家都在用.但是,我们需要了解更多.首先,闭包是一个匿名函数 (Anonymo ...
- JavaScript分支语句if, else if, switch 案例详解
if语句主要是在需要判断,或者在可知有多少种情形时使用的语句.A==B?"A等于B";"A不等于B"; 基本结构: if(判断条件){ ...
- JavaScript对象原型写法详解
体现对象原型分步式写法 //原型分步式写法 //构造函数 function Person(){} //对象原型 Person.prototype.name = 'Avensatr'; Pers ...
- Flex布局新旧混合写法详解
flex是个非常好用的属性,如果说有什么可以完全代替 float 和 position ,那么肯定是非它莫属了(虽然现在还有很多不支持 flex 的浏览器).然而国内很多浏览器对 Flex 的支持都不 ...
随机推荐
- 基于Python的爬虫案例
案例1:使用爬虫爬取京东华为手机用户评论 本案例借鉴哔哩哔哩博客主视频教程,感谢其教程为我开启了爬虫之旅:https://www.bilibili.com/video/BV1Yt4y1Y7nt?t=3 ...
- 20-优化配置介绍、HMR
webpack性能优化 开发环境性能优化 生产环境性能优化 开发环境性能优化 优化打包构建速度 HMR 优化代码调试 source-map 生产环境性能优化 优化打包构建速度 oneOf babel缓 ...
- 快速上手Linux核心命令(九):文件备份与压缩
目录 tar 打包备份 gzip 压缩或解压文件 zip 打包和压缩文件 unzip 解压zip文件 scp 远程文件复制 rsync 文件同步工具 这期呢主要说一说Linux中文件备份与压缩命令,一 ...
- OpenAI CLIP 关键点 - 连接图像和文字
标签: #CLIP #Image2Text #Text2Image #OpenAI 创建时间:2023-04-21 00:17:52 基本原理 CLIP是一个图像分类模型. 准备训练数据:准备大量的文 ...
- 学node 之前你要知道这些
初识nodejs 19年年底一个偶然的机会接到年会任务,有微信扫码登录.投票.弹幕等功能,于是决定用node 来写几个服务,结果也比较顺利. 当时用看了下koa2的官方文档,知道怎么连接数据库 ...
- unity运行时调试log控制台
最近从GameFramework把里头觉得很赞的Debugger调试器单独抽离了出来,方便嵌入任意项目工程进行调试. 查看log信息,允许点击详情并复制到粘贴板,允许锁定log滚动面板 支持开启log ...
- 2021-01-18:java中,HashMap的创建流程是什么?
福哥答案2021-01-18: jdk1.7创建流程:三种构造器.1.初始容量不能为负数,默认16.2.初始容量大于最大容量时,初始容量等于最大容量.3.负载因子必须大于0,默认0.75.4.根据初始 ...
- vue全家桶进阶之路50:Vue3 环境变量+跨域设置实例
使用.env加后缀的方式来建立某个模式下的环境变量, 例如:项目根目录新建两个环境变量文件(development开发环境和production生产环境): .env.development .env ...
- OData WebAPI实践-与ABP vNext集成
本文属于 OData 系列文章 ABP 是一个流行的 ASP. NET 开发框架,旧版的的 ABP 已经能够非常好的支持了 OData ,并提供了对应的 OData 包. ABP vNext 是一个重 ...
- Actor Prioritized Experience Replay
论文宗旨: 由于PER 是以TD-error成正比的非均匀概率进行抽样的,但是在AC算法中即连续动作空间中,会表现出低效果. 分析结果是:Actor不能有效的从high TD-error的transi ...