前端开发

JavaScript 重构最佳实践

2018-12-08  本文已影响30人  番茄沙司a
  1. 尽量使用forEach,而不是循环

    [1, 2, 3].forEach((element) => console.log(element));
    
  2. 最好使用map来创建一个带有新值的数组,而不是用循环或forEach来更改数组的值

    [1, 2, 3].map((element) => element * 2);
    
  3. 过滤一个数组来剔除一些元素时,可以使用filter,而不是创建一个新的数组并推入符合条件的元素

    [1, 2, 3, 4, 5, 6, 7].filter((element) => (element % 2 == 1))
    

    Console:[ 1, 3, 5, 7 ]

  4. 将数组转化成其他类型的值(对象、数字等)时,建议使用reduce

    [1, 2, 3].reduce((element, accumulator) => element + accumulator);
    

    Console:6

    应用:返回一些累计的值,如:求和/乘积/对象/字符串/数组,要观察一下是否与你循环的数据类型不一致,那么可能就要使用reduce

  5. 避免在条件体中重新赋值

    不要这样:

    let emailSubject = "Hi";
    if (weKnowName) {
        emailSubject = emailSubject + "" + name;
    };
    sendEmail(emailSubject, emailBody);
    

    根本不需要赋值,可以用三元语法简化语句:

    function emailSubject() {
        return weKnowName ? `Hi ${name}` : `Hi`
    };
    sendEmail(emailSubject(), emailBody);
    
  6. 重视避免破坏性函数

    数组函数:splicefillpushpop

    对象:definePropertiesOject.assign(可以通过给它一个{}作为第一个参数避免改变第一个参数对象)

    作为变量的数字和字符串:+-,即添加和拼接

    数组 - 改变特定索引值的函数和语法糖:x[0]="something"

    改变或创建属性 - 点和方括号语法:.prop =[prop]

  7. 不要返回null

  8. 引用透明与避免状态

  9. 处理随机性

  10. 隔绝非纯函数

  11. 无参数编程

上一篇 下一篇

猜你喜欢

热点阅读