• JavaScript的性能优化


    一、

      1、</body>闭合之前,将所有的<script>标签放在页面底部。这能确保在脚本执行前页面已经完成渲染。

      2、合并脚本。页面中的<script>标签越少,加载也就越快,相响应也更迅速。无论外链文件还是内嵌脚本都是如此。  

      3、有多种阻塞下载JavaScript的方法:

           -使用<script>标签的defer属性;(Firefox和IE支持)

          -使用动态创建<script>元素来下载并执行代码;

          -使用XHR对象下载JavaScript代码并注入页面。

    二、

       1、访问字面量和局部变量的速度最快、相反,访问数组元素和对象成员相对较慢。

       2、由于局部变量存在作用链的起始位置,因此访问局部变量比访问作用域变量更快。变量在作用域链中的位置越深,访问的时间就越长。由于全局变量总处在作用域链的最末端,因此访问的速度最慢。

       3、避免使用with语句,因为他会改变执行环境作用域链。同样,try-catch语言中的catch子句也有同样的影响,因此也要小心使用。

       4、嵌套的对象成员会影响性能,尽量少用。

       5、属性或方法在原型链中的位置越深,访问它的速度也越慢。

       6、通常来说,你可以通过把常用的对象成员、数组元素、跨域变量保存在局部变量中来改善JavaScript性能,因为局部变量访问速度更快。

       三、

        1、‘最小化DOM访问次数,尽可能在JavaScript端处理

        2、如果需要多次访问某个DOM节点,请使用局部变量存储它的引用。

        3、小心处理HTML集合,因为它实时连系着底层文档。把集合的长度缓存到一个变量中,并迭代中使用它。如果需要经常操作集合,建议把它拷贝到一个数组中。

        4、如果可能的话,使用更快的API,比如querySelectorAll()和firstElementChild。

        5、’要留意重绘和重排,批量修改样式时。“离线”操作DOM树,使用缓存,并减少访问布局信息的次数。

        6、动画中使用决定布局,使用拖放代理。

        7、使用事件委托来减少处理时间的数量。

    四、

    for while do-while循环性能特性相当,并没有一种循环类型明显快于或者慢于其他类型

    避免使用for-in循环,除非你需要遍历一个属性数量未知的对象

    改善循环性能的最佳是减少每次迭代的运算量和减少循环迭代次数

    通常来说,swcith总比if-else快,但并不总是最佳解决方案

    在判断条件较多时,使用查找表比if-else和switch更快

    浏览器的调用栈大小限制了递归算法在JavaScript中的应用;栈溢出的错误会导致其他代码中断运行。如果你遇到栈溢出错误,可将方法改为迭代算法,或使用Memoization来避免重复计算

  • 相关阅读:
    [Linux] expect命令 (自动交互脚本)
    [MAC] 终端bash_profile配置不生效问题
    [IDEA] 开发常用插件
    [MAC] 环境常用工具
    [IDEA] 快捷键输出固定代码模板
    家庭网络-多无线路由器实现无缝漫游
    家庭网络-AP组网方案(POE供电)
    家庭网络-软路由搭建方案
    队列使用
    [多线程] 线程池的使用
  • 原文地址:https://www.cnblogs.com/CloverH/p/4908756.html
Copyright © 2020-2023  润新知