欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

js代码优化 提高运行性能

程序员文章站 2022-04-27 18:49:51
...

1if-else 排序
在 React组件中,这种写法还是很常见的。

export default function UserList(props) {
  const { users } = props

  if (users.length) {
    return <UserList />
  }

  return <EmptyUserList />
}

在这里,我们在没有用户时渲染否则渲染。 有大部分人认为,我们首先处理所有空的的情况,然后再处理有数据的情况。 对于任何读过它的人来说都更清楚,而且效率更高。 也就是说,以下代码比上一个代码更有效。

export default function UserList(props) {
const { users } = props

  if (!users.length) {
    return <EmptyUserList />
  }

  // some resource intensive operation
  return <UserList />
}

当然 users.length 一直有值的话,就使用第一种情况。

2运行时的求值的数量越少,性能就越好。

// maxWidth - (margin * 2)
const maxWidth = '980'
// minWidth - (margin * 2)
const minWidth = '80'
const margin = '10'
getWidth = () => ({
  maxWidth,
  minWidth,
})

3 延迟
延迟算法将计算延迟到需要执行时才执行,然后生成结果。

const someFn = () => {
  doSomeOperation()
  return () => {
    doExpensiveOperation()
  }
}

const t = someArray.filter((x) => checkSomeCondition(x)).map((x) => someFn(x))

// 现在,如果有需要在执行
t.map((x) => t())

最快的代码是未执行的代码,所以尽量延迟执行。

4 JavaScript 使用原型继承,JS 中所有对象都是Object的实例。

MDN说:

尝试访问对象的属性时,不仅会在对象上搜索该属性,还会在对象的原型,原型的原型等上搜索该属性,直到找到匹配属性名或原型链的末端。

对于每个属性,JavaScript引擎都必须遍历整个对象链,直到找到匹配项。 如果使用不当,这会占用大量资源,并影响应用程序的性能。

所以不要这样:

const name = userResponse.data.user.firstname + userResponse.data.user.lastname

而是这样做:

const user = userResponse.data.user
const name = user.firstname + user.lastname

使用临时变量来保存链接的属性,而不是遍历访问整条链。

相关标签: 代码风格