javascript - 当我们使用数组名称而不是扩展运算符时有什么区别?

标签 javascript ecmascript-6 ecmascript-5

如果我使用有什么区别:

var numbers = [1, 2, 3]
var mainArray = (numbers.length > 1) ? numbers : '';

而不是这个:

var numbers = [1, 2, 3]
var mainArray = (numbers.length > 1) ? [...numbers] : '';

最佳答案

由于数据结构的分配指向内存中的同一空间,如果您有两个变量引用同一数组,改变一个变量将改变另一个。也就是说:

如果 x = [1, 2, 3]y = x 然后我们说 x.push(5) y 也会有 5 因为它们指向同一个实例。如果您使用 [...x],您将创建 x 的副本。它消耗 O(n) 内存,一个新的引用。因此,如果 x 发生变化,y 将不受影响。

点差干净整洁,但确实有开销。如果用于非常大的数据集,它们将影响性能。

关于javascript - 当我们使用数组名称而不是扩展运算符时有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50707456/

相关文章:

javascript - 在 Javascript 中根据另一个输入的值更改输入值,反之亦然

javascript - 有没有办法让wysithtml5的链接编辑器让用户向href标签添加他们喜欢的任何内容?

javascript - 垃圾收集未使用的模块

javascript - Array.of(n) 、 Array(n) 和 array = [n] 有什么区别?

typescript - create-react-app 保留 ES5 后的 JavaScript

javascript - object.innerHTML 未正确更新?

javascript - 在带有装饰器和 HOC 的类组件中使用react-i18next

javascript - 使用 Jest/Enzyme 在 React 中的功能组件内部测试方法

javascript - JavaScript 中有多少个参数太多了?

javascript - 异步/等待失败的 Angular promise