JS中的一些优化

  • 由于JS是一种解释型语言,执行速度要比编译型语言慢得多
    1. 注作用域
      访问全局变量总是比访问局部变量要慢,因为需要遍历作用域链。只要能减少花费在作用域链上的时间,就能增加脚本的整体性能
      在ES6 按理来说 变量申明最好是:
      const > let > var
  • 避免全局查找
var imgs = document.getElementByTagName("img");
for(var i = 0, len = imgs.length; i < len; i++) {
  imgs[i].title = document.title + " image " + i;
}
var doc = document;
var imgs = doc.getElementByTagName("img");
for(var i = 0, len = imgs.length; i < len; i++) {
    imgs[i].title = doc.title + " image " + i;
}
  • 避免with语句(with会创建自已的作用域,因此会增加其中执行代码的作用域的长度)
  • 优化循环
    循环是编程中最常见的结构,优化循环是性能优化过程中很重要的一部分。一个循环的基本优化步骤如下:
    1) 减值迭代——大多数循环使用一个从0开始,增加到某个特定值的迭代器。在很多情况下,从最大值开始,在循环中不断减值的迭代器更加有效
    2) 简化终止条件——由于每次循环过程都会计算终止条件,故必须保证它尽可能快,即避免属性查找或其它O(n)的操作。
    3) 简化循环体——循环体是执行最多的,故要确保其被最大限度地优化。确保没有某些可以被很容易移出循环的密集计算。
    4) 使用后测试循环——最常用的for和while循环都是前测试循环,而如do-while循环可以避免最初终止条件的计算,因些计算更快。
    如:
  • 在循环中 正确使用 breakcontinue 能够有效地提高代码效率
for(var i = 0; i < values.length; i++) {
    process(values[i]);
}

优化1:简化终止条件

for(var i = 0, len = values.length; i < len; i++) {
    process(values[i]);
}

优化2:使用后测试循环(注意:使用后测试循环需要确保要处理的值至少有一个)

var i = values.length - 1;
if(i > -1) {
    do {
        process(values[i]);
    }while(--i >= 0);
}
  • 在ES6中 使用 for…of 更加方便, 可以结合Object.keys()Object.values()遍历对象
  • 多个变量声明
var i = 1;
var j = "hello";
var arr = [1,2,3];
var now = new Date();

优化

var i = 1,
    j = "hello",
    arr = [1,2,3],
    now = new Date();
var name = values[i];
i++;

优化

var name = values[i++];

尽量使用字面量的形式来创建我们的数组和对象

var a = [1, "hello", 45];
var o = {
    name : "bill",
    age : 13
};

你可能感兴趣的:(JavaScript)