JS 五大性能瓶颈

173 阅读1分钟

作用域链

当查找一个变量时,先在当前作用查找,就会沿作用域链到上层作用域查找,直到全局作用域,查找的越深,性能越差

原型链查找

当查找一个对象属性时,会先查找当前对象的实例属性,如果没有找到则去查找原型上有没有,如果原型上没有,则会查找原型的原型,直到查找到顶级Object,查找的越深,性能越差

循环

有些可能一层循环就可以搞定,就不必用两层;还有循环中有时会用length
for(var i=0; i<arr.length; i++)
每一次循环都会求值一次arr.length,性能就不如
for(var i=0,len=arr.length; i<len; i++)

DOM操作

DOM操作是很耗费性能的,如果有大量更新DOM
我们可以在js中统一更新后,再一次更新到页面中,减少重绘和回流的次数

事件绑定

如果在一个10000项的列表中每一个都绑定一个匿名函数会导致耗费过多内存
如果我们使用事件代理就只需要在祖先级的标签上绑定一个事件,根据冒泡原理,可以减少内存,提高性能