JavaScript清空数组的三种方式及引用影响分析
本文详解JavaScript中清空数组的三种常用方法:splice、设置length为0以及重新赋值为空数组。重点分析各方法对原数组引用的影响,指出splice和length=0会修改原对象,而重新赋值仅改变变量指向。针对常量数组,推荐使用length=0方式,并提供了相应的代码示例与注意事项。
使用 Array.prototype.splice() 方法
let course = ['HTML', 'CSS', 'JavaScript']
course.splice(0)
console.log(course.length) // 0
需要注意的是,此操作会直接影响原数组的其他引用。
let course = ['HTML', 'CSS', 'JavaScript']
let other = course
course.splice(0)
course // []
other // []
因为 splice() 会返回一个包含被删除元素的数组,你可以将返回值赋给一个新变量,从而获得原数组内容的副本。
let foo = ['hello', 'world']
// 清空并创建一个 foo 的副本
let bar = foo.splice(0, foo.length)
console.log(foo) // []
console.log(bar) // ['hello', 'world']
将 length 属性设置为 0
通过把数组的 length 属性设为 0 来清空数组。
let course = ['HTML', 'CSS', 'JavaScript']
course.length = 0
console.log(course) // []
重新赋值为空数组
let course = ['HTML', 'CSS', 'JavaScript']
course = []
console.log(course.length) // 0
length = 0 与 Array = [] 的区别?
在大多数场景中,将变量重新赋值为空数组是更优的选择。这种方式代码更简短且意图明确,优于修改 length 属性。
然而,当存在通过引用共享数组的情况,且希望保持这些引用指向同一对象时,策略会有所不同。
假设我们有一个名为 foo 的数组,并将另一个变量 bar 的值设为 foo 数组的引用。
let foo = ['hello', 'world']
// 添加引用
let bar = foo
如果我们将 foo 重新赋值为 [] 空数组,bar 变量仍然指向原始的数组对象。
foo = []
// bar 不受影响
console.log(bar) // ['hello', 'world']
执行 foo = [] 是将一个新的空数组引用赋值给变量,这不会影响其他指向原数组的引用。这意味着如果之前有引用指向该数组,其内容仍保留在内存中,可能导致内存泄漏。
若改为执行 foo.length = 0,即删除数组内的所有内容,其他引用也会受到影响,看到数组被清空。
let foo = ['hello', 'world']
let bar = foo
foo.length = 0
// `bar` 受影响
console.log(bar) // []
如果数组被声明为常量(const),则无法将其重新赋值为 []。此时应使用 length = 0 的方式。
const course = ['HTML', 'CSS', 'JavaScript']
course = [] // 会抛出异常:"Assignment to constant variable"
// 使用 length = 0
course.length = 0本文介绍了JavaScript中清空数组的几种方法。如需了解更多相关内容,请搜索本站以往文章或继续浏览后续文章,感谢支持!
JS读取本地文件时报错或无响应的常见原因
2026-11-05 16:32:31
let、const与var的区别:JavaScript变量声明最佳实践
2026-11-05 14:16:38
JS中直接定义静态二维数组的字面量写法
2026-11-05 14:16:08
JS 怎么查找字符串中所有匹配项的位置
2026-11-05 14:15:53
JavaScript新手常犯的编码错误与最佳实践指南
2026-11-04 22:12:38
