在JavaScript中,myArray.length = 0 vs myArray = new Array()之间有什么区别?

In JavaScript, what's the difference between myArray.length = 0 vs myArray = new Array()?

本问题已经有最佳答案,请猛点这里访问。

关于javascript,在清除数组时,我发现了两种方法:

1
myArray.length = 0;

VS

1
myArray = new Array()

我想从逻辑上讲,myArray.length = 0;保留了引用,而myArray = newArray()创建了一个新的引用,使以前的引用无效。

但是,我发现在过去,通过使用我自己的逻辑来猜测JavaScript是如何工作的,通常都是不成功的:)

这两种方法有什么区别(如果有的话)?


这次你是对的。new Array()创建数组的新实例并将其分配给myArraymyArray.length = 0清空旧数组,而myarray仍然指向旧数组。

顺便说一句,使用[]符号比new Array()符号更好。

我个人总是尝试使用myArray.length = 0;,因为它实际上清空了数组的内容。


1
2
myArray.length = 0; // Signifies empty array
[1,2,3] // Length of this array is 3

因此,基本上,一个包含内容的数组被一个空数组覆盖。

您还可以使用:

1
myarray = []; //More simple and elegant!!!

性能方面:[]new Array();

正如juno已经说过的:new Array()创建一个数组的新实例(这个数组的大小将在参数中提到)并将其分配给myarray。