下面是总结的几种清空数组的方法直接上代码:
var arr = [1,5,2,6,5,22,60];
function empty()
{
arr = [];
/*
arr = []意味着赋值给新数组变量,而其他引用不受影响。这意味着对先前数组的赋值任然保留在内存中,从而导致内存泄露。
*/
arr.length = 0;
/*
arr.length = 0;删除当前数组中的全部内容但不影响与其他的关联性
*/
arr.splice(0,arr.length);
/*
数组方法删除 splice(开始位置,长度)
*/
while(arr.length)
{
arr.pop(); //后面删除
//arr.shift(); 前面删除
}
};
empty();
console.log(arr); //输出为[]
求大神指点arr = []方法和arr.length = 0方法的优劣,到底哪种性能高,看了两篇文章说法不一.....
性能高是不是说赋值的快
http://stackoverflow.com/questions/4804235/difference-between-array-length-0-and-array
var arr = [1,2,3];
var Arr = [4,5,6];
var arr2 = arr;
var Arr2 = Arr;
arr = [];
Arr.length = 0;
/*
然而如果你想复制一个数组的副本,若用Arr.length = 0;删除数组内容,那么副本也将会失去内容
*/
console.log(arr,arr2,Arr,Arr2);
/*
[],
[1,2,3],
[],
[]
*/
只要功能正确,没有内存泄露,这两句对性能的影响应该不大吧!讨论这个问题,是纯学术派啊!
你可以使用 Tick Count 测试一下这两句的执行时间,估计是没有什么区别。如果一句测试不出来,你可以循环调用 100万次,进行耗时测试。