4

我主要认为我声明的变量越少越好。因此,当我浏览Julien Lecomte 演讲的演示文稿时,发现他声明了局部变量以减少查找开销。

var arr = ...;
var globalVar = 0;
(function () {
    var i;
    for (i = 0; i < arr.length; i++) {
        localVar++;
    }
})();

/* vs */

var arr = ...;
var globalVar = 0;
(function () {
    var i, l , localVar;
    l = arr.length;
    localVar = globalVar;
    for (i = 0; i < l; i++) {
        localVar++;
    }
    globalVar = localVar;
})();

/* (faster on all A-grade browsers) */

编辑:在设计基于 JavaScript 的 webapp/-site 以在所有现代桌面和移动浏览器上运行时 - 是否存在由于查找成本而我应该始终更喜欢在本地范围内缓存变量查找的情况?(例如,当访问不止一次的对象分配给myArray[100][20][40][90]或更改对象的多个属性时,该对象在当前范围内放置了许多级别,循环数以千计?)

或者查找时间是如此无关紧要,以至于我最好通过省略本地缓存变量来节省字符空间和内存?

4

1 回答 1

0

我认为 TJ Crowder 解释得很好。这真的取决于:

  1. “如何”使用您的阵列。
  2. “多大”“多大”。
  3. 它是一个普通数组,还是一个数组数组!

例如,如果您在数组“myArray”中有一个对象(它具有您需要经常访问的方法和属性),myArray[100][20][40][90]并且您经常使用该对象,那么如果您只是将对象缓存在某个变量中并且使用缓存版本!

于 2013-11-10T13:18:15.257 回答