美文网首页
优化你的JavaScript条件语句

优化你的JavaScript条件语句

作者: 婆娘漂亮生活安逸 | 来源:发表于2019-06-21 16:56 被阅读0次

有以下的人员清单:
男:John,Bob,Ben
女:Amy,Lisa,Lili

1.使用 Array.includes 处理多种条件


a.如果是 John,Bob,Ben这三人则打印出 “Boy” 的提示信息;

function test(name){
  if (name === 'John' || name === 'Bob'  || name === 'Ben') {
    console.log('Boy!');
  }
}

如果人员名单内又加入了几个 Boy,那么这段逻辑将变成非常庞大;因此可以通过Array.includes进行改写;

function test(name){
  let boyNames = ['John', 'Bob', 'Ben'];
  if (boyNames.includes(name)) {
    console.log('Boy!');
  }
}

2.减少条件嵌套,提早进行return;


a条件下,在继续添加条件:
b.如果未传进 name 参数时,则提示‘No Name Parameter!’;
c.如果在传入 name 为 Boy,并且人数 count 大于 1 时,则同时给出提示‘The Same Name!’

function test(name, count){
    let boyNames = ['John', 'Bob', 'Ben'];
    if (name) {
        if (boyNames.includes(name)) {
            console.log('Boy!');
            if (count > 1) {
                console.log('The Same Name!');
            }
        }
    } else {
        console.log('No Name Parameter!');
    }
}

以上代码没有任何问题,却发现嵌套了多层的 if 条件,后期如果有条件需要继续维护,则嵌套非常深!就会造成 回调地狱 的现象!我们可以通过相反的条件判断无效情况,尽早 return,这样会大大减少层级嵌套。

function test(name, count){
    let boyNames = ['John', 'Bob', 'Ben'];
    if (!name) console.log('No Name Parameter!');
    if (!boyNames.includes(name)) return;
    console.log('Boy!');
    if (count > 1) {
        console.log('The Same Name!');
    }
}

3.使用解构以及函数默认值;


当未传入 name 时,我们使用符号 ‘--’ 来代替;
以下代码可能经常见到:

function test(name, count){
    let name = name || '--';
    // ...
}

这边代码的给name赋默认值,
以前我还喜欢用三目表达式let name = name ? name : '--'
其实可以使用函数默认值简化

function test(name = '', count = 0){
    // ...
}

如果参数过多传入对象时,就可以使用解构,这些都可以帮助简化代码;

function test({ name = '', count = 0 }){
    // ...
}

4.使用Lodash;


第三方库 Lodash
提供了大量的现成方法,可以大大的简化代码,很多逻辑不需要自己特意重新写。这里不在讲述用法。

对于我自己而言,当一段代码可以复制粘贴时,那么这个时候就可以考虑复用,如果一些条件语句过于冗余时,就该想想如何简化,这里不排除可能逻辑真的很复杂情况。

相关文章

网友评论

      本文标题:优化你的JavaScript条件语句

      本文链接:https://www.haomeiwen.com/subject/apnhqctx.html