看书的时候看到了数组.length=0这句话,就顺手百度了一下,嗯,其实也很好理解,直接=【】,相当于开辟新的内存地址去存储了
let arr = [0, 1, 2]
arr.length = 0
console.log(arr) // []
区别
var arr1 = [1,2,3]
var arr2 = [4,5,6]
var newArr1 = arr1
var newArr2 = arr2
console.log(arr1,newArr1,arr2,newArr2) // [1, 2, 3] [1, 2, 3] [4, 5, 6] [4, 5, 6]
arr1 = []
arr2.length = 0
console.log(arr1,newArr1,arr2,newArr2) // [] [1, 2, 3] [] []
arr = [],重新开辟一块内存,其它引用不受影响。
- arr的指针指向这个空数组的内存,原有的内存数据还存在
- 这意味着对先前数组的赋值任然保留在内存中,从而导致内存泄露
arr.length = 0,删除当前数组中的全部内容,但不影响与其他的关联性