zoukankan      html  css  js  c++  java
  • Javascript的代码性能建议

    1、尽量使用变量和常量,减少使用数组和对象成员

     2、尽量减少使用动态作用域

       - 避免使用with语句

       - 由于try-catch也会改变作用域链,最好将错误处理委托给一个函数来处理用以避免catch中过多访问局部/全局变量

       - 减少使用eval语句(非常危险)

    3、小心使用闭包

       - 由于闭包跨越作用域,导致性能下降

       - 由于闭包与其关联作用域对象共享活动对象,导致关联对象无法销毁(直到闭包被销毁),这带来额外内存开销,IE中会导致内存泄漏

    4、尽量减少使用嵌套成员,最好在一个‘.’操作符就能够访问到对象成员

    5、属性或方法在原型链中的位置越深,效率越低,实例成员的访问速度优于原型成员

    6、如许多次访问对象成员、数组元素、跨域变量和多级嵌套成员,应尽量使用局部变量替代

    7、字符串连接

       - 使用+和+=运算符在非IE7及以下版本的浏览器中效率都高于其他方式连接

       - 使用+和+=时,尽量将被连接字符串变量放在左边,并且尽量避免产生临时变量

         举例如下:

         var str = "abc";

         str += "def" + "ghi";

         由于表达式的从左到右计算的特点,"def"+"ghi"先执行并产生临时字符串"defghi",然后执行str+"defghi";

         可以改为:str += str + "def" + "ghi"; 这样执行就是(str + "def") + "ghi",不会产生临时字符串;

         当然如果程序如下,也会产生临时字符串:

         str = "def" + str + "ghi";

         这个将会产生两个临时字符串,"def"+str产生一个,然后其结果和"ghi"的合并还会产生一个;

       - IE7及以下版本浏览器中,Array.prototyp.join方法的效率远远高于+和+=,但在其他浏览器中数组连接字符串的效率是最低的

       - String.prototyp.concat的效率也稍慢于+和+=

     8、使用Object/Array直接量来初始化

       - 例如:

         var obj = new Object();

         obj.name = 'Maculish';

         obj.age = 22;

         obj.gender = 'M';

         var arr = new Array();

         arr[0] = 'Maculish';

         arr[1] = 22;

         arr[2] = 'M';

         和以下用直接量创建的对象/数组相比,直接量创建的大小会更小,运行速度会更快

         var obj = {

             name: 'Maculish',

             age: 22,

             gender: 'M'

         };

    var arr = ['Maculish', 22, 'M'];

    尤其是要初始化的对象属性越多或数组元素越多,则性能优势越明显。

  • 相关阅读:
    cmd命令之set详解
    微信公众号之推送消息
    总结js(1)
    本地文件夹变远程仓库并且提交Github
    npm之使用淘宝源
    页面倒计时返回
    在线sass编译器
    js条件语句之职责链数组
    【轉】靜
    css 實現微信聊天類似的氣泡
  • 原文地址:https://www.cnblogs.com/Maculish/p/2844569.html
Copyright © 2011-2022 走看看