面试题037-数组.length=0和数组=[]区别

114 阅读1分钟

看书的时候看到了数组.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,删除当前数组中的全部内容,但不影响与其他的关联性