前言

在使用 JavaScript 的时候,有时我们会处理大量条件语句,这里有5个技巧帮助我们编写更简洁的条件语句。

一、对多个条件使用 Array.includes

例子:

function condition(fruit) {
if (fruit == 'apple' || fruit == 'banana') {
console.log(fruit);
}
}

上面的例子看起来不错,但如果有更多水果需要判断呢,比如桃子、草莓、橙子等等,我们要用更多的 || 来扩展这个表述吗?

我们可以使用 Array.includes 重写上面的条件

function condition(fruit){
const allFruit = ['apple','banana','peach','Strawberry','orange'];
if(allFruit.includes(fruit)){
console.log(fruit)
}
}

这样做之后,代码看起来更简洁。

二、更少的嵌套,尽早返回

例子:

// 尽早返回不存在的条件

function condition(fruit, quantity) {
const allFruits = ['apple','banana','peach','Strawberry','orange']; if (!fruit) throw new Error('No fruit!'); if (allFruits.includes(fruit)) {
console.log(fruit); if (quantity > 10) {
console.log(quantity);
} }
}

通过反转条件和提早返回,我们可以进一步减少嵌套:

function condition(fruit, quantity) {
const allFruits = ['apple','banana','peach','Strawberry','orange']; if (!fruit) throw new Error('No fruit!'); if (!allFruits.includes(fruit)) return ; console.log(fruit) if (quantity > 10) {
console.log(quantity);
}
}

三、使用默认的函数参数和解构

例子:

function condition(fruit, quantity) {
if (!fruit) return;
const q = quantity || 1; console.log(`We have ${q} ${fruit}!`);
} condition('banana'); // We have 1 banana!
condition('apple', 2); // We have 2 apple!

使用默认参数和解构:

function condition({name} = {}, quantity = 1) {
console.log (name || 'unknown');
} condition(undefined); // unknown
condition({ }); // unknown
condition({ name: 'apple', color: 'red' }); // apple

四、选择 Map 或对象字面量,而不是 Switch 语句

例子:

function condition(color) {
switch (color) {
case 'red':
return ['apple', 'strawberry'];
case 'yellow':
return ['banana', 'pineapple'];
case 'purple':
return ['grape', 'plum'];
default:
return [];
}
} condition(null); // []
condition('yellow'); // ['banana', 'pineapple']

上面的代码似乎没有什么问题,但我发现它相当冗长。同样的结果可以通过对象字面量和更简洁的语法来实现:

对象字面量:

const fruitColor = {
red: ['apple', 'strawberry'],
yellow: ['banana', 'pineapple'],
purple: ['grape', 'plum']
}; function condition(color) {
return fruitColor[color] || [];
}

使用 Map 实现相同效果:

const fruitColor = new Map()
.set('red', ['apple', 'strawberry'])
.set('yellow', ['banana', 'pineapple'])
.set('purple', ['grape', 'plum']); function condition(color) {
return fruitColor.get(color) || [];
}

使用 Array.filter

const fruits = [
{ name: 'apple', color: 'red' },
{ name: 'strawberry', color: 'red' },
{ name: 'banana', color: 'yellow' },
{ name: 'pineapple', color: 'yellow' },
{ name: 'grape', color: 'purple' },
{ name: 'plum', color: 'purple' }
]; function condition(color) {
return fruits.filter(f => f.color == color);
}

五、所有或部分使用 Array.every & Array.some 的条件

例子:

检查所有水果都为红色:

const fruits = [
{ name: 'apple', color: 'red' },
{ name: 'banana', color: 'yellow' },
{ name: 'grape', color: 'purple' }
]; function condition() {
let isAllRed = true; for (let f of fruits) {
if (!isAllRed) break;
isAllRed = (f.color == 'red');
} console.log(isAllRed); // false
}

代码太长了!我们可以用 Array.every 来减少行数:

const fruits = [
{ name: 'apple', color: 'red' },
{ name: 'banana', color: 'yellow' },
{ name: 'grape', color: 'purple' }
]; function test() {
const isAllRed = fruits.every(f => f.color == 'red'); console.log(isAllRed); // false
}

如果我们想用一行代码来判断任何一个水果是否为红色,我们可以使用 Array.some

const fruits = [
{ name: 'apple', color: 'red' },
{ name: 'banana', color: 'yellow' },
{ name: 'grape', color: 'purple' }
]; function condition() {
const isAnyRed = fruits.some(f => f.color == 'red'); console.log(isAnyRed); // true
}
随笔整理自
  http://blog.jobbole.com/114671/
感谢博主分享!

JS 优化条件语句的5个技巧的更多相关文章

  1. 优化 JS 条件语句的 5 个技巧

    优化 JS 条件语句的 5 个技巧 原创: 前端大全 前端大全 昨天 (给前端大全加星标,提升前端技能) 编译:伯乐在线/Mr.Dcheng http://blog.jobbole.com/11467 ...

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

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

  3. JS:条件语句3

    1.while while 语句只要指定条件为 true,就会执行循环. 语法: while(条件){ 语句: } 例: var i = 0; while (i < 5) { console.l ...

  4. JS:条件语句1

    条件语句: 1.if...else if (condition1) { 当条件 1 为 true 时执行 } else { 当条件 1 不为 true 时执行 } if (condition1) { ...

  5. JS:条件语句2

    1.for循环:循环代码块一定的次数 例: for(var i = 0;i<5;i++){ console.log(i); } // 0 1 2 3 4 遍历对象: var arr=[" ...

  6. 应用索引技术优化SQL 语句(转)

    原文出处 一.前言 很多数据库系统性能不理想是因为系统没有经过整体优化,存在大量性能低下的SQL 语句.这类SQL语句性能不好的首要原因是缺乏高效的索引.没有索引除了导致语句本身运行速度慢外,更是导致 ...

  7. 20个JS优化代码技巧

    原文网址链接为:http://www.jstips.co/ .截取了一部分本人认为比较实用的技巧分享给大家.其中一小部分技巧为JS面向对象的写法,不宜一一列出.关于JS面向对象的写法可参考本人前几篇随 ...

  8. js中的条件语句

    //js中的条件语句 ; //example1 单分支语句 ){ console.log("你已经不年轻了!"); }else{ console.log("你依然很有活力 ...

  9. js中的运算符和条件语句

    js中的运算符大体上可以分为4类:1算术运算符.2一元操作符.3比较运算符.4逻辑运算符. 算术运算符一般指的是加减乘除求余这五种操作符:+,-,*,/,%.通过算术运算符可以对js中的变量进行操作. ...

随机推荐

  1. 【Zabbix】CentOS6.9系统下部署Zabbix-agent

    目录 安装Zabbix-agent 1.安装YUM源 2.安装Zabbix agent端 3.配置zabbix_agentd.conf文件 4.启动zabbix agent服务 5.zabbix图形界 ...

  2. Docker入门(一)用hello world入门docker

    初识Docker Docker是什么?   Docker 是一个开源的应用容器引擎,基于 Go 语言并遵从Apache2.0协议开源.   Docker 可以让开发者打包他们的应用以及依赖包到一个轻量 ...

  3. C# 设置Excel条件格式(二)

    上一篇文章中介绍了关于设置Excel条件格式,包括基于单元格值.自定义公式等应用条件格式.应用数据条条件类型格式.删除条件格式等内容.在本篇文章中将继续介绍C# 设置条件格式的方法. 要点概述: 1. ...

  4. 1.docker常用命令

    1.启动交互式容器 $ docker run -i -t IMAGE /bin/bash -i --interactive=true|false 默认是false -t --tty=true|fals ...

  5. Python xml 模块

    Python xml 模块 TOC 什么是xml? xml和json的区别 xml现今的应用 xml的解析方式 xml.etree.ElementTree SAX(xml.parsers.expat) ...

  6. WEB 实时推送技术的总结

    前言 随着 Web 的发展,用户对于 Web 的实时推送要求也越来越高 ,比如,工业运行监控.Web 在线通讯.即时报价系统.在线游戏等,都需要将后台发生的变化主动地.实时地传送到浏览器端,而不需要用 ...

  7. 广州.NET微软技术俱乐部提技术问题的正确方式

    这是 北京.NET微软技术俱乐部 里一个人问问题的方式, 很赞, 所以希望大家问问题也采用这种方式. 耗时少, 使用12月8日活动上董志强先生介绍的windows 10 Snip&Sketch ...

  8. PM真的不是PM

    上周写了一篇<PM意识2.0>,前同事老A留言给我说:“PM已死!”一句话勾起很多回忆啊~当年,我们在一家内资IT公司,我是质量总监,他是研发总监,带四五个PM.老A负责所有项目的计划和监 ...

  9. Python第五天 文件访问 for循环访问文件 while循环访问文件 字符串的startswith函数和split函数 linecache模块

    Python第五天   文件访问    for循环访问文件    while循环访问文件   字符串的startswith函数和split函数  linecache模块 目录 Pycharm使用技巧( ...

  10. iOS 设置View阴影

    iOS 设置View投影 需要设置 颜色 阴影半径 等元素 UIView *shadowView = [[UIView alloc] init]; shadowView.frame = CGRectM ...