首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果...arguments ( console.log(...arguments) )正常,为什么var a=...arguments失败?

如果...arguments ( console.log(...arguments) )正常,为什么var a=...arguments失败?
EN

Stack Overflow用户
提问于 2016-06-30 11:12:10
回答 2查看 44关注 0票数 1

代码A,这是好的,并记录[ 1, 2, 3 ]

代码语言:javascript
复制
function fn() {
    console.log(...arguments);
}

fn([1, 2, 3]);

代码B,这在SyntaxError: Unexpected token ...中也失败了,在()中包装...arguments也不会有帮助。

代码语言:javascript
复制
function fn() {
    var a = ...arguments;
}

fn([1, 2, 3]);

在这两种情况下,我想我们都有一个RHS查找。为什么可以将...arguments传递给console.log (或其他函数),而不将其赋值给变量呢?

PS。我知道这在现实生活中是不存在的,或者有其他更好的解决方案。我的问题纯粹是理论性的/概念性的,仅限于理解为什么会发生不同的行为。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-30 11:21:00

扩展语法的两个应用程序是:

  1. 将可迭代值的项转换为函数调用的参数
  2. 将可迭代项转换为数组的元素

因此,这是可行的:

代码语言:javascript
复制
function fn() {
    var a = [...arguments];
}
票数 3
EN

Stack Overflow用户

发布于 2016-06-30 11:20:13

它不像B码那样有效..。无效语法

你可以在fn旁传播,就像

代码语言:javascript
复制
function fn(...params) 
{
  ...
}

或者ArrayObject

代码语言:javascript
复制
var a = [1,2,3,4,5],
b = [6,...a];

var x = {a:1,b:1},
y = {c:1,...x}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38121443

复制
相关文章

相似问题

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