首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >当我们使用数组名称而不是扩展运算符时,有什么不同?

当我们使用数组名称而不是扩展运算符时,有什么不同?
EN

Stack Overflow用户
提问于 2018-06-06 03:18:26
回答 3查看 70关注 0票数 2

如果我使用:

代码语言:javascript
复制
var numbers = [1, 2, 3]
var mainArray = (numbers.length > 1) ? numbers : '';

而不是这样:

代码语言:javascript
复制
var numbers = [1, 2, 3]
var mainArray = (numbers.length > 1) ? [...numbers] : '';
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-06-06 03:25:17

由于数据结构的赋值指向内存中的相同空间,因此如果有两个变量引用同一数组,则更改一个变量也会更改另一个变量。也就是说:

如果是x = [1, 2, 3]y = x,那么我们说x.push(5) y也会有这5个,因为它们指向相同的实例。如果你使用[...x],你正在创建一个x的副本。它消耗O(n)内存,一个新的引用。因此,如果x被改变,y将不受影响。

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

票数 4
EN

Stack Overflow用户

发布于 2018-06-06 03:21:54

不同的是,如果你使用:

代码语言:javascript
复制
var numbers = [1, 2, 3]
var mainArray = (numbers.length > 1) ? numbers : '';
//mainArray == numbers => true

在这里,它会将numbers引用赋值给mainArray

而不是这样:

代码语言:javascript
复制
var numbers = [1, 2, 3]
var mainArray = (numbers.length > 1) ? [...numbers] : '';
//mainArray == numbers => false

在这里,它将从numbers的元素创建新的数组并将其分配给mainArray

票数 1
EN

Stack Overflow用户

发布于 2018-06-06 03:22:18

扩展运算符(...)将数组展开为单个值,而不是值的数组。如下面的代码片段所示,numbers是一个整数数组,而...numbers是3个单独的整数。因此,[...numbers]将为您提供一个具有相同值的新数组,而numbers只是对现有数组的引用。

代码语言:javascript
复制
var numbers = [1, 2, 3]
console.log(numbers);
console.log(...numbers);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50707456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档