javaScript-条件语句优化
1、多重判断时使用 Array.includes
test = (fruit: string) => {
if (fruit == 'apple' || fruit == 'strawberry'....) {
console.log('apple or strawberry');
}
}
test = (fruit: string) => {
const fruits = ['strawberry','apple'];
if (fruits.includes(fruit)) {
console.log('apple or strawberry');
}
}
2、使用默认参数和解构
在JavaScript中我们总是需要检查 null / undefined的值和指定默认值:
test = (fruit: string, quantity?: any) => {
if (!fruit) {
return;
}
console.log(quantity || 0)
}
我们可以通过声明 默认函数参数
test = (fruit: string, quantity: any = 20) => {
if (!fruit) {
return;
}
console.log(quantity)
}
test = (fruit?: any) => {
if (fruit && fruit.name) {
console.log(fruit.name)
} else {
console.log('unknown')
}
}
通过默认参数以及解构从而避免判断条件 fruit && fruit.name
test = ({ name }: any = {}) => {
console.log(name || 'name unknown')
}
我们也需要声明空对象 {} 作为默认值。如果我们不这么做,当执行 test(undefined) 时,你将得到一个无法对 undefined 或 null 解构的的错误。因为在 undefined 中没有 name 属性。
也可以使用lodash的_.get()方法减少对null的检查
3、倾向于对象遍历而不是Switch语句
test = (color: string) => {
switch (color) {
case 'red':
return ['apple', 'strawberry'];
case 'yellow':
return ['banana', 'pineapple'];
case 'purple':
return ['grape', 'plum'];
default:
return [];
}
}
在这种场景,我们可以用对象遍历实现相同的结果,语法看起来更简洁:
test = (color: string) => {
const fruitColor = {
red: ['apple', 'strawberry'],
yellow: ['banana', 'pineapple'],
purple: ['grape', 'plum']
};
return fruitColor[color] ||[]
}
4、对 所有/部分 判断使用Array.every & Array.some
利用 JavaScript Array 的内置方法来减少代码行数。看下面的代码,我们想要检查是否所有水果都是红色:
const fruits = [
{ name: 'apple', color: 'red' },
{ name: 'banana', color: 'yellow' },
{ name: 'grape', color: 'purple' }
];
test = (fruits: any = []) => {
let isAllRed: boolean = true;
// 条件:所有水果都是红色
for (let f of fruits) {
if (!isAllRed) break;
isAllRed = (f.color == 'red');
}
}
test9 = (fruits: any = []) => {
console.log(fruits.every((item: any) => item.color === 'red'))
}
test10 = (fruits: any = []) => {
console.log(fruits.some((item: any) => item.color === 'red'))
}
5、更少的嵌套,尽早 Return
例子:
如果没有传入参数 fruit,抛出错误
接受 quantity 参数,并且在 quantity 大于 10 时打印出来
test = (fruit: any, quantity: any) => {
const redFruits = ['apple', 'strawberry', 'cherry', 'cranberries'];
// 条件 1: fruit 必须有值
if (fruit) {
// 条件 2: 必须是red的
if (redFruits.includes(fruit)) {
console.log('red');
// 条件 3: quantity大于10
if (quantity > 10) {
console.log('big quantity');
}
}
} else {
throw new Error('No fruit!');
}
}
当发现无效语句时,尽早Return
test = (fruit: any, quantity: any) => {
const redFruits = ['apple', 'strawberry', 'cherry', 'cranberries'];
// 条件 1: fruit 必须有值
if (!fruit) {
throw new Error('No fruit!');
return;
}
// 条件 2: 必须是red的
if (redFruits.includes(fruit)) {
console.log('red');
// 条件 3: quantity大于10
if (quantity > 10) {
console.log('big quantity');
}
}
}
javaScript-条件语句优化的更多相关文章
- JavaScript条件语句-5--if语句的嵌套
JavaScript条件语句 学习目标 1.掌握length属性的应用 2.掌握if语句的嵌套 length 语法:string.length 功能:获取string字符串的长度 返回值:number ...
- JavaScript条件语句4--分支语句--if
JavaScript条件语句--分支语句 学习目标 1.掌握条件语句if 2.掌握prompt()的应用 3.掌握alert的应用 If语句 语法一: If(condition){ statement ...
- 【译】写好JavaScript条件语句的5个技巧
译文 当我们写JavaScript代码时,经常会用到到条件判断处理,这里有5个技巧能使你写出更好.更简洁的条件语句. 1.使用Array.includes处理多种条件 让我们来看一下的例子: // c ...
- JavaScript 条件语句
if语句 有些代码块只能在一定条件下运行,通过if.if else.else代码块,可以让你的代码按条件执行. // 控制流 var foo = true; var bar = false; ...
- javascript条件语句
//条件语句 if (false) { console.log("is true") } else { console.log("is false") } // ...
- JavaScript -- 条件语句和循环语句
if语句 在我们开发程序的时候,经常会遇到选择题,例如,年龄大于18,你就可以抽烟喝酒烫头,年龄小于18,你就只能吃饭喝水.在我们的代码中,我们可以用if语句来实现这种判断 语法一: if( cond ...
- 写出更好的 JavaScript 条件语句
1. 使用 Array.includes 来处理多重条件 // 条件语句 function test(fruit) { if (fruit == 'apple' || fruit == 'strawb ...
- JS条件语句优化
1.对多个条件使用Array.includes eg: function test(fruit){ ...
- js - 总结一下条件语句优化
[笔记] // 简单的语句用三目运算符也可以的(除了需要return的) 1 == 1 ? console.log('执行了...1') : console.log(); 1 == 2 ? conso ...
- 【代码笔记】Web-JavaScript-JavaScript 条件语句
一,效果图. 二,代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...
随机推荐
- 利用WebBrowser实现自动登入功能
公司内部改革,对考勤方面做出调整,要求实现办公自动化,在OA进行上下班考勤:作为程序员,突发奇想如何实现自动化考勤应用? 需求如下: 可设置考勤地址.用户信息.上下班时间: 根据设置的上下班时间,定时 ...
- R中apply函数族
参考于:http://blog.fens.me/r-apply/ 1. apply的家族函数 2. apply函数 apply函数是最常用的代替for循环的函数.apply函数可以对矩阵.数据框.数组 ...
- ceshi1
图片素材
- oracle external密码验证
什么是external密码验证 当OS user 中存在和DB user 同名的用户时 直接使用和DB user 同名的OS user 可以不输入密码直接登录数据库, [oracle@zxrac1 ...
- java反射基础知识(三)
原文地址:http://tutorials.jenkov.com/java-reflection/index.html http://www.cnblogs.com/penghongwei/p/329 ...
- go——类型的本质
在声明一个新类型之后,声明一个该类型的方法之前,需要先回答一个问题:这个类型的本质是什么. 如果给这个类型增加或删除某个值,是要创建一个新值,还是要更改当前的值? 如果是要创建一个新值,该类型的方法就 ...
- springmvc 原生servlet支持
/** * 可以使用 Serlvet 原生的 API 作为目标方法的参数 具体支持以下类型 * * HttpServletRequest * HttpServletResponse * HttpSes ...
- redis 笔记04 服务器、复制
服务器 1. 一个命令请求从发送到完成主要包括以下步骤: 1). 客户端将命令请求发送给服务器 2). 服务器读取命令请求,并分析出命令参数 3). 命令执行器根据参数查找命令的实现函数,然后执行实现 ...
- Linux 搭建 SVN
一.yum 安装 subversion yum -y install subversion 二.创建svn版本库所在路径(建议放在opt.usr.home下) mkdir -p /usr/local/ ...
- Linux常用命令(6/26)——dd命令和split命令
dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换. 以可选块长度复制文件,默认情况下从标准输入设备输出到标准输出设备.复制过程中,还可以对文件进行一些转换. dd命令可以指定block的 ...