有以下的人员清单:
男: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
提供了大量的现成方法,可以大大的简化代码,很多逻辑不需要自己特意重新写。这里不在讲述用法。
对于我自己而言,当一段代码可以复制粘贴时,那么这个时候就可以考虑复用,如果一些条件语句过于冗余时,就该想想如何简化,这里不排除可能逻辑真的很复杂情况。
网友评论