清空数组的方法有哪些?
1. arr = []
直接重新赋值,指向新数组(不修改原数组)。
let arr = [1, 2, 3];
arr = []; // 原来的数组对象如果还被引用,则原数组依然存在
2. arr.length = 0
通过设置 length = 0 使原数组清空所有元素(会改变原数组,如果有其它引用也受影响)。
let arr = [1, 2, 3];
arr.length = 0; // arr 变为 []
3. arr.splice(0, arr.length)
通过 splice 从索引 0 开始删除所有元素,效果与 length = 0 类似,但更直观。
let arr = [1, 2, 3];
arr.splice(0, arr.length); // arr 变为 []
4. while 循环 pop
let arr = [1, 2, 3];
while (arr.length) arr.pop();
补充:
- 如果数组有 其它引用(如函数参数、闭包中保存),推荐
arr.length = 0或splice(会影响所有引用);arr = []只断开当前变量的指向。- 在性能上三者差异极小,
length = 0写法最简洁。- 注意区分
arr.length = 0与delete arr:delete只删除对象属性,并不会改变length,更不会清空数组。



