js前端代码优化 - 02

41 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第25天,点击查看活动详情

上文js前端代码优化 - 01讲解了if逻辑判断的几种优化方法,本文将继续总结js代码优化实例。

for循环优化

提到for循环优化,不得不提到性能方面的考虑。平时我们常用的循环语句不外乎: for()while()for(in)for(of)这几种循环 for循环语句比较常用,如下:

for(let i=0;i<arr.length;i++){
  console.log(i)
}

实际上,arr.length每次遍历都需要计算一次,如果数组长度相当大时,会比较耗费性能,因此可以提前计算arr.lenght的长度,这样仅需要计算一次长度,优化了性能。

优化后:

const length = arr.length;
for(let i=0;i<length;i++){
  console.log(i)
}

关于for-offor-in

for(in) 语句的效率极差,因为它需要查询散列键,所以应该尽量少用。for-offor-in 循环遍历数组更好。

关于null、undefined和空值检查

优化前

if (test !== null || test !== undefined || test !== "") {
   testValue = test
}

优化后

const testValue = test || ""

这里也可以使用新语法可选链或者双问号

可选链用法:当a.e可能为undefined,则可以使用a.e?.f

双问号用法:

const foo = null ?? "aaa";

声明多个变量与赋值

当要声明两个具有相同值或相同类型的变量时,可以使用简写方式。即:let a, b = 1;

当处理多个变量并进行赋值的时候,使用“解构”可以使得代码更加友好。

优化前

let a, b, c;
a = 1;
b = 2;
c = 3;

优化后

let [a, b, c] = [1, 2, 3];

数组去重

传统的数组去重有相当多方法,比如循环遍历,用indexof等,现在,我们可以使用ES6 的 Set 方法。

Set 本身是一个构造函数,用来生成 Set 。它类似于数组,但是成员的值都是唯一的,没有重复的值。 如下为Set 方法的使用:

function unique(arr) {
    return Array.from(new Set(arr)) 
}