大家好,今天为大家介绍一些web工程师常用的JS优化技巧
一、不要使用 with() 语句
青岛it培训机构告诉我们,这是因为 with()语句将会在作用域链的开始添加额外的变量。额外的变量意味着,当任何变量需要被访问的时候,JavaScript引擎都需要先扫描with()语句产生的变量,然后才是局部变量,最后是全局变量。

So with() essentially gives local variables all the performance drawbacks of global ones, and in turn derails Javascript optimization.
因此with()语句同时给局部变量和全局变量的性能带来负面影响,最终使我们优化JavaScript性能的计划破产。
二、避免全局查找
青岛java培训机构告诉我们,在一个函数中会用到全局对象存储为局部变量来减少全局查找,因为访问局部变量的速度要比访问全局变量的速度更快些
资深WEB前端工程师总结的一些JavaScript性能优化技巧
三、小心使用闭包
青岛java培训机构告诉我们,虽然你可能还不知道“闭包”,但你可能在不经意间经常使用这项技术。闭包基本上被认为是JavaScript中的new,当我们定义一个即时函数的时候,我们就使用了闭包,
闭包的问题在于:根据定义,青岛java培训机构告诉我们,在它们的作用域链中至少有三个对象:闭包变量、局部变量和全局变量。这些额外的对象将会导致其他的性能问题。但是Nicholas并不是要我们因噎废食,闭包对于提高代码可读性等方面还是非常有用的,只是不要滥用它们(尤其在循环中)。
四、注意NodeList
最小化访问NodeList的次数可以极大的改进脚本的性能
编写JavaScript的时候一定要知道何时返回NodeList对象,这样可以最小化对它们的访问
进行了对getElementsByTagName()的调用
获取了元素的childNodes属性
获取了元素的attributes属性
访问了特殊的集合,如document.forms、document.images等等
要了解了当使用NodeList对象时,合理使用会极大的提升代码执行速度
五、循环引用
如果循环引用中包含DOM对象或者ActiveX对象,那么就会发生内存泄露。内存泄露的后果是在浏览器关闭前,即使是刷新页面,这部分内存不会被浏览器释放。
简单的循环引用:
但是通常不会出现这种情况。通常循环引用发生在为dom元素添加闭包作为expendo的时候。
资深WEB前端工程师总结的一些JavaScript性能优化技巧
init在执行的时候,当前上下文我们叫做context.这个时候,context引用了el,el引用了function,function引用了context.这时候形成了一个循环引用。
下面2种方法可以解决循环引用:
1、置空dom对象
资深WEB前端工程师总结的一些JavaScript性能优化技巧
青岛java培训机构告诉我们将el置空,context中不包含对dom对象的引用,从而打断循环应用。
2、构造新的context
资深WEB前端工程师总结的一些JavaScript性能优化技巧
把function抽到新的context中,这样,function的context就不包含对el的引用,从而打断循环引用。
通过javascript创建的dom对象,必须append到页面中
IE下,脚本创建的dom对象,如果没有append到页面中,刷新页面,这部分内存是不会回收的!
希望对您有所帮助
更多青岛it培训机构相关资讯,请扫描下方二维码