这取决于很多方面.
现实是不同的.您不应该担心客户端存储.至少不是这样的.您真正需要的唯一内存特定控件是memoization.除此之外,您需要做的就是清理痕迹,可以这么说.如果您处于OOP环境中,请确保始终为delete实例引用,COM并DOM在完成后引用null 和引用.
如果要清空集合(数组),只需使用delete运算符即可.如果不定义集合为一个实例属性,而是使用的是var作为其定义为一个上下文变量,利用myArray.length = 0;这将delete数组中的整个存储.
如果您正在处理大型集合,则直接分配比使用该Array.prototype.push();方法更快.myArray[i] = 0;比myArray.push(0);根据jsPerf.com 测试用例更快.
迭代数组所花费的时间可能会发生巨大变化,具体取决于您引用数组长度的方式以及您使用的Internet浏览器.
// Option 1
for (var i = 0; i < someArray.length; i++) {
// do something;
};
// Option 2
var l = myArray.length;
for(var i = 0; i < l; i++) {
// do something
};
// Option 3
for (var i = 0, ii = someArray.length; i < ii; i++) {
// do something;
};
Run Code Online (Sandbox Code Playgroud)
此处提供了上述测试用例.
截至2015年6月6日,相对速度如下:
+--------+------------+---------------+----------------------+
| Option | Firefox | Google Chrome | Internet Explorer 11 |
+--------+------------+---------------+----------------------+
| 1 | Fastest | 0.35% Slower | 46% Slower |
| 2 | 21% Slower | 0.15% Slower | 0.09% Slower |
| 3 | 21% Slower | Fastest | Fastest |
+--------+------------+---------------+----------------------+
Run Code Online (Sandbox Code Playgroud)
在定义数组时,绝对没有必要指定长度,尤其是在进行延迟初始化时.
// Doing this is pointless in JS. It will result in an array with 100 undefined values.
var a = new Array(100);
// Not even this is the best way.
var a = new Array();
// Using the array literal is the fastest and easiest way to do things.
var a = [];
Run Code Online (Sandbox Code Playgroud)
此处提供了数组定义的测试用例.