JavaScrip条件表达式优化
1,前言
今早看了一篇文章《JavaScrip实现:如何写出漂亮的条件表达式》,原创于:华为云开发者社区,作者:查尔斯。抱着随便逛逛的心态看了一下,受益匪浅,于是记录一下,我认为对我有用的几点。
2,多条件if语句优化
在写业务代码的过程中,经常会碰到需要判断多个条件的if
语句,如下:
function zoo(animal) {
if (animal === "dog" || animal === "cat" || animal === "tiger") {
console.log('这是一只哺乳动物');
} else {
// ...
}
}
let name = 'tiger';
console.log(zoo(name));
这种写法在条件比较少的情况下看起来没有问题,但是如果继续拓展判断的条件,那么代码将会变得难以维护,而且逻辑会不清晰。
解决方法
function zoo(animal) {
const list = ['dog', 'cat', 'tiger']
if (list.includes(animal)) {
console.log('这是一只哺乳动物');
} else {
// ...
}
}
let name = 'tiger';
console.log(zoo(name));
这里创建了一个数组
,以便将条件与逻辑语句分开,并使用了includes
方法,现在,如果我们想要检查任何其他动物,我们需要做的就是添加一个新的数组项
3,参数默认值
function log(type, obj = {}){
console.log(type)
console.log(obj.name)
}
log(0)
以上,会打印出 0
和 undefined
, 如果没有设置obj = {}
,就会报错。
4,Switch语句优化
如下,这是一个设置title的函数,看上去很丑陋
// 设置标题
setTitle(type) {
let flow = type || 0;
let title = '筹开项目';
switch (flow) {
case 1:
title = '房源立项'
break
case 2:
title = '发起支出'
break
case 3:
title = '开放预定'
break
case 4:
title = '开放签约'
break
}
return title;
}
经过改造,可以变成如下
setTitle(type) {
let flow = type || 0;
let list = ['筹开项目', '房源立项', '发起支出', '开放预定', '开放签约']
return list[flow];
}
如果看了觉得有帮助的,我是@鹏多多,欢迎 点赞 关注 评论;
END
往期文章
个人主页
JavaScrip条件表达式优化的更多相关文章
- [Inside HotSpot] C1编译器优化:条件表达式消除
1. 条件传送指令 日常编程中有很多根据某个条件对变量赋不同值这样的模式,比如: int cmov(int num) { int result = 10; if(num<10){ result ...
- [Django]模型提高部分--聚合(group by)和条件表达式+数据库函数
前言:本文以学习记录的形式发表出来,前段时间苦于照模型聚合中group by 找了很久,官方文章中没有很明确的说出group by,但在文档中有提到!!! 正文(最后编辑于2016-11-12): 聚 ...
- Scala:条件表达式的好处
条件表达式的好处之一是:让代码更简洁,例如在一个需要根据不同条件收集不同值的场景中,多数语言提供的代码如下: ; ) { tmp = xxx; } ) { tmp = yyy; } else { tm ...
- Shell 条件表达式汇总
条件表达式 文件表达式 if [ -f file ] 如果文件存在if [ -d ... ] 如果目录存在if [ -s file ] 如果文件存在且非空 if [ -r f ...
- shell之条件表达式
conditional expressions are used by the [[ compound command and the test and [ builtin commands. ari ...
- Python学习教程(learning Python)--3.3 分支语句的条件表达式详解
本节主要讨论分支语句的条件表达式问题. 在if或者if-else分支控制语句里由于都用到条件判断(表达式是真还是假),条件判断可以是一种关系运算也可以是布尔表达式. 本节将对if及if-else语句的 ...
- golang没有条件表达式?:
详见The Go Programming Language Specification中Expressions一章中未提及此表达式, 故其不支持. 再强调一次, GO不支持条件表达式 conditio ...
- MySQL--索引条件下推优化
http://blog.163.com/li_hx/blog/static/1839914132015782821512/ 一 什么是“索引条件下推” “索引条件下推”,称为 Index Condit ...
- thymeleaf条件表达式
条件表达式形式:condition, then and else <tr th:class="${row.even}? 'even' : 'odd'"> ... < ...
随机推荐
- 一键获取linux内存、cpu、磁盘IO等信息脚本编写,及其原理详解
更多linux知识,请关注公众号:一口Linux 一.脚本 今天主要分享一个shell脚本,用来获取linux系统CPU.内存.磁盘IO等信息. #!/bin/bash # 获取要监控的本地服务器IP ...
- .Net5 下Dictionary 为什么可以在foreach中Remove
在一个讨论群里,看见有人说Dictionary可以在foreach中直接调用Remove了,带着疑问,写了简单代码进行尝试 class Program { static void Main(strin ...
- 什么是IPFS集群?IPFS集群有什么好处?
IPFS作为区块链不多的创新技术,其热度一直居高不下.IPFS挖矿效率最高的就是集群结构,那么今天我就带着大家了解IPFS的集群挖矿. 什么是集群挖矿? 集群(cluster)就是计算机集群,指在 ...
- net start MongoDB 服务没有响应控制功能。 请键入 NET HELPMSG 2186 以获得更多的帮助。
我在 Windows 电脑上修改了 mongo.cfg 文件后 执行 net start mongodb 的时候,命令行出现了这个报错. 这个报错,有几种情况可以进行排查 1. 你的 mongod 命 ...
- Docker上安装Redis
Docker可以很方便的进行服务部署和管理,下面我们通过docker来搭建Redis的单机模式.Redis主从复制.Redis哨兵模式.Redis-Cluster模式 一.在Docker上安装单机版R ...
- java例题_49 计算子串出现的次数
1 /*49 [程序 49 子串出现的个数] 2 题目:计算字符串中子串出现的次数 3 */ 4 5 /*分析 6 * 1.子串的出现是有标志的,如" ",*,#或者其他 7 * ...
- java例题_36 移动数组中数据位置(用到数组的合并操作)
1 /*36 [程序 36 移动位置] 2 题目:有 n 个整数,使其前面各数顺序向后移 m 个位置,最后 m 个数变成最前面的 m 个数,比如输入数字 3 为 1 2 3 4 5 6 7 8 9 0 ...
- CDN域名解析问题
CDN域名解析问题 之前配置CDN域名解析,碰到一个配置带www的域名和不带www的域名,这里就有个解析的坑,已经将cdn域名都配置好的,但是一直访问不了,白屏现象 后面排除源站问题和cdn配置问题, ...
- 使用 Elastic 技术栈构建 Kubernetes全栈监控
以下我们描述如何使用 Elastic 技术栈来为 Kubernetes 构建监控环境.可观测性的目标是为生产环境提供运维工具来检测服务不可用的情况(比如服务宕机.错误或者响应变慢等),并且保留一些可以 ...
- 第4 章 : 理解 Pod 和容器设计模式
理解Pod和容器设计模式 本文整理自 CNCF 和阿里巴巴联合举办的云原生技术公开课的课时 4:理解 Pod 和容器设计模式.本次课程中,阿阿里巴巴高级技术专家.CNCF 官方大使张磊为大家介绍了为什 ...