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'"> ... < ...
随机推荐
- A New Stone Game POJ - 1740
题目链接:https://vjudge.net/problem/POJ-1740#author=0 题意:有n堆石子,每次你可以选一堆拿走任意数量的石子,而且你还可以选择从这一堆剩下石子中取任意数量石 ...
- python-3-2
一 切片 1.切片是list取值的一种方式 列子: nums = ['a','b','c','d','e','f','h','g','k','l','kk','nn','ee'] 取b和c元素出来 p ...
- 《Selenium自动化测试实战:基于Python》之 Selenium IDE插件的安装与使用
第3章 Selenium IDE插件的安装与使用 京东:https://item.jd.com/13123910.html 当当:http://product.dangdang.com/292045 ...
- Typora常用编辑方法-一个能将写博客变作享受的工具
1,标题 ctrl+数字(1~5) 2,序号 数字序号 数字 + . +空格,之后回车换行会自动产生数字序号 非数字序号 有三种 实心圆 ,非实心圆与实心方框 都是 +空格 ,之后按tab键向内缩进, ...
- Python基础之数据类型详解
为什么会有数据类型? 在介绍具体的数据类型之前,需要了解为什么需要区分数据类型.我们知道,一个公司会有很多个大的部门,每个部门下又会有许多细分的小部门,构成了公司的完整体系结构.如果把python的数 ...
- MyBatis-Plus Generator自定义模板
相信大家在开发过程中,应该都用过Mybatis-Plus的Generator,但是可能没有自定义过模板并使用. 每个项目都应该有一个从Controller层到Mapper层的通用模板,来去掉哪些简单的 ...
- [GDKOI2021] 提高组 Day 2 总结
[ G D K O I 2021 ] 提 高 组 D a y 2 总 结 不明的感觉今天的题比昨天的简单些,感觉今天爆炸的可能性很低. 嗯,于是乎,就很自信地打完了比赛.然后下午 ...
- 运行ASP.NET程序(4)
运行ASP.NET程序有两种方式: 直接点击如图标志的按钮可直接运行,还可以选择浏览器 第二种:F5 两者没区别,看个人习惯
- 【Django学习笔记】-环境搭建
对于初学django新手,根据以下步骤可以快速进行Django环境搭建 虚拟环境创建 使用virtualenv创建并启用虚拟机环境 ,关于virtualenv可参考https://www.yuque. ...
- Day16_96_IO_available() 和 skip()方法
available() 和 skip()方法 int available()方法 返回流中估计剩余字节数,int i ,i 值表示所剩余的字节数.使用read()方法读取数据,读取一个字节,avail ...