英文原文:http://davidwalsh.name/empty-array 下面是我的翻译,肯定有不准的地方,还请多对照原文。
在Javascript里面清空数组是一个常用的操作,但是我所见清空的方法常常都不正确,往往很多开发者在多数时候非但不是清空,反而创建了一个新的数组:
myArray = [];//bad
这绝对不是一种清空数组的高效办法;如果要截断且同时清空一个数组,你需要将它的长度属性设为零:
myArray.length = 0;// good!
将数组长度设为0会清空已存在的数组,而不会创建另一个数组!这将帮助你避免数组引用的问题。上述会新创建数组的情况是这样的:
// ... as provided by Dag in the comments
A = [1,2,3,4,5]
B = A
A = []
console.log(B) // [1,2,3,4,5]
但是,length 截断会同时将A和B同时置为初始数组但是数据清空了。