1.对多个条件使用Array.includes

eg: function test(fruit){                                                                                                                function test(fruit){

if(fruit=='apple' || fruit=='cherry' ){                        可改写为

console.log('red')                        =================================>>          const redFruits=['apple','cherry','strawberry'];

}                                                                                                                                       if(redFruits.includes(fruit)){

console.log('red')

}

}                                                                                                                                               }

2.更少的嵌套,尽早的返回

eg: 如果没有水果名称,抛出错误

如果红色水果数量超过10个,接受并打印

function test(fruit, quantity){

const redFruits=['apple','cherry','strawberry'];

if(!fruit) throw new Error('No fruit!');

if(!redFruits.includes(fruit)) return;

console.log('red'');

if(quantity >10){

console.log('big quantity')

}

}

3.使用默认的函数参数和结构

4.选择Map或对象字面量,而不是switch语句

function test(color){

switch(color){

case 'red':

return ['apple','strawberry'];

case 'yellow':

return['banana','pineapple'];

case 'purple':

return ['grape','plum'];

default:

reutrn [];

}

}

test(null)

test('yellow')

||||||||||

||||||||||  代码改造后

||||||||||

||||||||||

||||||||||

改法一:const fruitColor={

red:['apple','strawberry'],

yellow:['banana','pineapple'],

purple:['grape','plum']

}

function test(color){

return fruitColor[color] || [];

}

改法二:

const fruitColor=new Map()

.set('red',['apple','strawberry'])

.set('yellow',['banana','pineapple'])

.set('purple',['grape','plum'])

function test(color){

return fruitColor.get(color) ||[]

}

改法三:

const fruits=[

{name:'apple',color:'red'},

{name:'strawberry',color:'red'},

{name:'banana',color:'yellow'},

{name:'pineapple',color:'yellow},

]

function test(color){

return fruits.filter(f>=f.color==color)

}

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

eg:检查所有的水果是否都是红色的

const fruits=[

{name:'strawberry',color:'red'},

{name:'banana',color:'yellow'},

]

function test(){

const isAllRed=fruits.every(f>=f.color=='red');

console.log(isAllRed)

}

eg:判断任何一种水果是否为红色

const fruits=[

{name:'strawberry',color:'red'},

{name:'banana',color:'yellow'},

]

function test(){

const isAllRed=fruits.some(f>=f.color=='red');

console.log(isAllRed)

}

JS条件语句优化的更多相关文章

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

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

  2. 优化 JS 条件语句及JS 数组常用方法, ---- 看完绝对对日后开发有用

    前言: 日常所说的优化优化.最后我们到底优化了哪些,不如让我们从代码质量开始:个人觉得简洁简化代码其实觉得存在感挺强烈的QAQ 1. 获取URL中 ?后的携带参数: 这是我见过最简洁的了,若有更简洁的 ...

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

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

  4. js条件语句,用if...else if....else方程ax2+bx+c=0一元二次方程。求根

    if 语句 - 只有当指定条件为 true 时,使用该语句来执行代码 if...else 语句 - 当条件为 true 时执行代码,当条件为 false 时执行其他代码 if...else if... ...

  5. JAVAscript学习笔记 js条件语句 第三节 (原创) 参考js使用表 (2017-09-14 15:55)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. js条件语句初步练习

    var a=18            if(a<10){                alert("便宜")            }            else{  ...

  7. js条件语句之职责链数组

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

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

    前言 在使用 JavaScript 的时候,有时我们会处理大量条件语句,这里有5个技巧帮助我们编写更简洁的条件语句. 一.对多个条件使用 Array.includes 例子: function con ...

  9. js中的条件语句

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

随机推荐

  1. asp如何让panel居中

    把panel放在一个table的td中,并把position设为relative,就可以在设计中直接调整它的位置了

  2. 树链剖分【洛谷P3833】 [SHOI2012]魔法树

    P3833 [SHOI2012]魔法树 题目描述 Harry Potter 新学了一种魔法:可以让改变树上的果子个数.满心欢喜的他找到了一个巨大的果树,来试验他的新法术. 这棵果树共有N个节点,其中节 ...

  3. 【洛谷2324】[SCOI2005]骑士精神 IDA*

    [SCOI2005]骑士精神 描述 在一个\(5×5\)的棋盘上有\(12\)个白色的骑士和\(12\)个黑色的骑士, 且有一个空位.在任何时候一个骑士都能按照骑 士的走法(它可以走到和它横坐标相差为 ...

  4. 前端优化系列之一:dns预获取 dns-prefetch 提升页面载入速度

    问题:怎么做到dns域解析?   用于优化网站页面的图片   问题:怎么提升网站性能? dns域解析,是提升网站的一个办法.   DNS Prefetch,即DNS预获取,是前端优化的一部分. 一般来 ...

  5. Python十大应用领域与就业方向

    参考链接:https://baijiahao.baidu.com/s?id=1604847283884842928&wfr=spider&for=pc 正文: 近些年,编程语言Pyth ...

  6. Android MVP模式实现组件和业务逻辑分离

    1,Activity代码展示,只需要一下3行重要代码即可完成任何复杂的逻辑 /** * 登录界面 * * @author lipanquan */public class LoginActivity ...

  7. rhcs红帽插件及 轮循

    server1:yum install luci ricci -yecho westos | passwd -stdin  ricci/etc/init.d/ricci startchkconfig ...

  8. PreparedStatement是如何防止SQL注入的?

    为什么在Java中PreparedStatement能够有效防止SQL注入?这可能是每个Java程序员思考过的问题. 首先我们来看下直观的现象(注:需要提前打开mysql的SQL文日志) 1. 不使用 ...

  9. Spring里的Ant Pattern

    Spring里的Ant Pattern用于匹配URL 可以参考官网:https://docs.spring.io/spring/docs/current/javadoc-api/org/springf ...

  10. IOS开发-基于WebDriverAgent代理服务,实现iOS手机app自动化测试的框架搭建

    导引 iOS自动化测试一直使用的appium,iOS系统升级至10.0 Xcode8.0之后,改用WebDriverAgent代理服务作为server,编写了一套基于WebDriverAgent服务 ...