强力推荐几个编写高性能的JavaScript 的小建议( 二 )

  • 使元素脱离文档流(隐藏元素、拷贝元素、DocumentFragment 请参考JavaScript系统学习DOM系列文章之DocumentFragment)
  • 对其应用多重改变;
  • 把元素带回文档中
  • 使用事件委托(事件逐层冒泡并能被父级元素捕获,使用事件代理,只需给外层元素绑定一个处理器,就可以处理其子元素上触发的所用事件),因为给DOM元素绑定事件以及浏览器需要跟踪每个事件处理器都需要消耗性能 。
  • 6、字符串连接
    str += 'one'+'two';str= str+'one'+'two';后者方式会比前者少在内存中创建一个临时字符串,所以性能有相应的提升,所以,所以推荐后者的写法 。
    7、直接使用字面量
    创建对象和数组推荐使用字面量,因为这不仅是性能最优也有助于节省代码量 。
    var obj = {name:'tom',age:15,sex:'男'}?
    8、数组长度缓存
    如果需要遍历数组,应该先缓存数组长度,将数组长度放入局部变量中,避免多次查询数组长度 。
    for(let i = 0, len = arr.lenght; i < len; i++) { ...}9、循环比较
    JS提供了三种循环:for(;;)、while()、for(in) 。在这三种循环中 for(in)的效率最差,因为它需要查询Hash键,因此应尽量少用for(in)循环,for(;;)、while()循环的性能基本持平 。
    10、少用eval
    尽量少使用eval,每次使用eval需要消耗大量时间,这时候使用JS所支持的闭包可以实现函数模板 。
    11、字符串转换
    当需要将数字转换成字符时,采用如下方式:"" + 1 。从性能上来看,将数字转换成字符时,有如下公式:("" +) > String() > .toString() > new String() 。String()属于内部函数,所以速度很快 。而.toString()要查询原型中的函数,所以速度逊色一些,new String()需要重新创建一个字符串对象,速度最慢 。
    12、浮点数转换整形
    当需要将浮点数转换成整型时,应该使用Math.floor()或者Math.round() 。而不是使用parseInt(),该方法用于将字符串转换成数字 。而且Math是内部对象,所以Math.floor()其实并没有多少查询方法和调用时间,速度是最快的 。
    后记暂时只记录了这么多,大家如果有好的建议,欢迎在评论区备注,我会将大家是建议补充进文章中,方便我们在工作和面试中避免采坑
    参考文章:
    https://github.com/fengshi123/blog/issues/6

    【强力推荐几个编写高性能的JavaScript 的小建议】


    推荐阅读