Javascript中的“...”运算符[重复]

Posted

技术标签:

【中文标题】Javascript中的“...”运算符[重复]【英文标题】:"..." operator in Javascript [duplicate] 【发布时间】:2017-04-05 13:06:27 【问题描述】:

我在javascript中找到了以下案例。我不明白 '...' 运算符在这里的意思。我在谷歌上搜索它,但我没有得到任何关于它的信息。这个运算符还有其他用途吗?有人可以帮帮我吗?

var x= [1,2,3];
var y = [4,5,6];

var z = [...x, ...y]; // z will be [1,2,3,4,5,6];

谢谢。

【问题讨论】:

... 运算符称为扩展运算符或扩展语法。请参阅MDN Page 了解它。 ... is not an operator! @Felix Kling 如果不是操作员,那是什么?我问是因为它在 MDN 文档中的表达式和运算符下归档。 @Pineda:规范实际上为... 的大多数用例命名。例如。在这种情况下,我们谈论的是一个spread element,而当用于解构时,它是一个rest element。这也更清楚地表明... 在不同的上下文中做了不同的事情。请参阅我的第一条评论中的链接。基本上我想让人们明白... 不是它自己的东西,它是数组文字语法、解构语法、函数调用语法等的一部分。 @FelixKling 我们也可以简单地称它为 token,但“标点符号”很好 :-) 【参考方案1】:

我有一种思维方式,可以很容易地理解和记住“...”的工作原理。

var arr = [1,2,3] // this is arr which is the array

另一方面

...arr            // this is whatever inside arr, which is 1,2,3

因此您也可以将其视为获取数组内部的内容。


请注意,...arr 本身不是有效的语法。你可以在 方法很多,我想到的其中两个是:

1 - 将数组中的内容传递给函数

var arr = [ 1,2,3 ]
var myFunc = function(a,b,c) 
  console.log(a,b,c)

myFunc(..arr)   // logs 1 2 3

myFunc(1,2,3)   // logs 1 2 3

2 - 获取数组内部的内容并在另一个数组中使用它们。

var arr = [ 1,2,3 ]
var foo = [ ...arr, 4,5,6 ] // now foo is [ 1,2,3,4,5,6 ]

【讨论】:

对象扩展语法在 ES7 中也不可用。 感谢您的指出。找不到太多关于它的内容并删除了有关它的部分。 但是...arr 本身并不意味着什么。 ...arr 有不同的含义,具体取决于它是否被使用,例如在数组文字内或在解构内。这就是为什么单独查看... 是没有意义的。 我的回答是否具有误导性?我想不出这种类比不起作用的场景@Felix Kling [foo, ...bar] = baz;...bar 意味着不同的东西。 ...arr 本身没有任何意义,这是一个语法错误。

以上是关于Javascript中的“...”运算符[重复]的主要内容,如果未能解决你的问题,请参考以下文章

javascript中的单加运算符[重复]

是啥 ?。运营商和我可以在哪里使用? JavaScript中的空值合并运算符[重复]

javascript (<) 中的小于运算符的工作方式小于或等于 [重复]

比较javascript中的值[重复]

类似于 SQL“like”的 JavaScript 运算符 [重复]

奇怪的javascript运算符:expr >>> 0 [重复]