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'"> ... < ...
随机推荐
- python-实现输出乘法口诀表
list1 = [1,2,3,4,5,6,7,8,9] 2 def number(num): 3 for i in list1[:num]: 4 result = 1 * i 5 print(&quo ...
- mysql连接不上本地服务器或者localhost:3306报错
今天初学MySQL数据库就遇到问题: 主要是本地服务器登录问题 workbench里双击那个connection出现的 解决方法: 1:看一看防火墙,这是最常见的,这种主要是防火墙限制了访问,可能是安 ...
- 14、MyBatis教程之全部(包括所有章节)
MyBatis 3.5.5 教程 1.环境准备 jdk 8 + MySQL 5.7.19 maven-3.6.1 IDEA 学习前需要掌握: JDBC MySQL Java 基础 Maven Juni ...
- DAOS 分布式异步对象存储|安全模型
DAOS 使用了一个灵活的安全模型,将身份验证和授权分离开来.它的设计令其对 I/O 的影响被降到最小. DAOS 对用于 I/O 传输的网络结构没有提供任何传输安全性保障.在部署 DAOS 时,管理 ...
- 云计算和AI时代,运维应该如何做好转型?
云计算和AI时代,运维应该如何做好转型? 今天我们来聊一聊,在云计算和AI时代,运维应该如何做好转型?今天的内容可以说是我们前面运维组织架构和协作模式转型的姊妹篇.针对运维转型这个话题,谈谈我的思考和 ...
- Lucas(卢卡斯)定理
Lucas(卢卡斯)定理 定义 若 \(p\) 为质数,且\(a\ge b\ge1\),则有: \[C_{a}^{b}\equiv C_{a/p}^{b/p}\cdot C_{a (mod\,p)}^ ...
- Day16_90_通过反射机制获取某个特定的构造方法
通过反射机制获取某个特定的构造方法 public class ReflectTest13 { public static void main(String[] args) throws ClassNo ...
- Day15_87_通过反射机制获取某个特定的方法
通过反射机制获取某个特定的方法 反射是通过 方法名+形参列表来区分各个方法的(形参列表要用class类型.加.class) 示例代码 import java.lang.reflect.Method; ...
- Day14_78_可变长参数
可变长参数 可变长参数只能在形参列表的最后一个,且只能出现一次. 代码实例 import java.util.Date; public class 可变长参数 { public static void ...
- KMP(梅开三度之数据结构详解版
前言 KMP算法是一种字符串匹配算法,其重中之重是next数组的构建,其代码的简洁与神奇使其广受关注. 但不难发现,acm中学到的KMP和数据结构里面学到的KMP并不一样o(︶︿︶)o 之前我写过ac ...