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-条件语句优化的更多相关文章

  1. JavaScript条件语句-5--if语句的嵌套

    JavaScript条件语句 学习目标 1.掌握length属性的应用 2.掌握if语句的嵌套 length 语法:string.length 功能:获取string字符串的长度 返回值:number ...

  2. JavaScript条件语句4--分支语句--if

    JavaScript条件语句--分支语句 学习目标 1.掌握条件语句if 2.掌握prompt()的应用 3.掌握alert的应用 If语句 语法一: If(condition){ statement ...

  3. 【译】写好JavaScript条件语句的5个技巧

    译文 当我们写JavaScript代码时,经常会用到到条件判断处理,这里有5个技巧能使你写出更好.更简洁的条件语句. 1.使用Array.includes处理多种条件 让我们来看一下的例子: // c ...

  4. JavaScript 条件语句

    if语句     有些代码块只能在一定条件下运行,通过if.if else.else代码块,可以让你的代码按条件执行. // 控制流 var foo = true; var bar = false; ...

  5. javascript条件语句

    //条件语句 if (false) { console.log("is true") } else { console.log("is false") } // ...

  6. JavaScript -- 条件语句和循环语句

    if语句 在我们开发程序的时候,经常会遇到选择题,例如,年龄大于18,你就可以抽烟喝酒烫头,年龄小于18,你就只能吃饭喝水.在我们的代码中,我们可以用if语句来实现这种判断 语法一: if( cond ...

  7. 写出更好的 JavaScript 条件语句

    1. 使用 Array.includes 来处理多重条件 // 条件语句 function test(fruit) { if (fruit == 'apple' || fruit == 'strawb ...

  8. JS条件语句优化

    1.对多个条件使用Array.includes eg: function test(fruit){                                                    ...

  9. js - 总结一下条件语句优化

    [笔记] // 简单的语句用三目运算符也可以的(除了需要return的) 1 == 1 ? console.log('执行了...1') : console.log(); 1 == 2 ? conso ...

  10. 【代码笔记】Web-JavaScript-JavaScript 条件语句

    一,效果图. 二,代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

随机推荐

  1. [ngClass]、[ngStyle]的基本使用(转载)

    1.ngStyle 基本用法 <div [ngStyle]="{'background-color':'green'}"></<div> 判断添加 & ...

  2. ubuntu下安装qwt

    转载自:http://blog.chinaunix.net/uid-20717410-id-256767.html 相对于官方说明,特别适应于使用qt IDE开发者. //以下为引用: 虽然官网上说只 ...

  3. Mycat教程---数据库的分库分表

    mycat介绍 介绍在官方网站上有比较详细的介绍,在这里复制粘贴没什么意思,大家到官网上看 官网链接 前置条件 本教程是在window环境下运行的,实际生产推荐在Linux上运行. 必备条件(自行安装 ...

  4. 使用npm构建前端项目基本流程

    现在各种前端框架, 库文件基本都托管到npm上, 我们平常下载到别人的项目文件, 也基本是用npm 构建的, 不了解点node和npm那是寸步难行. 下面介绍的代码示例不敢说是最佳实践, 但都是我亲自 ...

  5. Python基础总结(字符串常用,数字类型转换,基本运算符与流程控制)

    一.字符串常用操作 #Python strip() 方法用于移除字符串头尾指定的字符(默认为空格) name='*egon**' print(name.strip('*'))#移除 name 变量对应 ...

  6. java二叉排序树

    二叉排序树又称二叉查找树.它或者是一颗空树,或者是具有如下性质的二叉树: 1.如果左子树不空,那么左子树上的所有节点均小于它的根节点的值: 2.如果右子树不空,那么右子树上的所有节点均大于它的根节点的 ...

  7. Oracle数据安全(三)权限管理

    一.权限概述 所谓权限就是执行特定类型SQL命令或访问其他模式对象的权利.用户在数据库中可以执行什么样的操作,以及可以对哪些对象进行操作,完全取决于该用户所拥有的权限. 在Oracle中将权限分为系统 ...

  8. BeatSaber节奏光剑双手柄MR教程

    一.物料准备: 1 显卡1060及以上的PC主机 2 HTC VIVE头盔一套(头盔直插显卡上的HDMI接口) 3 1080P摄像头一个(插USB3.0) 4 绿幕一套,能覆盖整个摄像头的可拍摄范围即 ...

  9. Book Review of “The practice of programming” (Ⅱ)

    The practice of programming Chapter 2 Algorithms and Data Structures Searching sequential search (li ...

  10. 关于Simplicity Studio使用math.h编译出错

    原因是未调用C标准库. 解决方法: 1.点项目右键——>properties——>C/C++Build——>Settings——>GNU ARM C Linker——>L ...