【发布时间】:2016-11-02 10:49:27
【问题描述】:
代码 A,没关系,记录 [ 1, 2, 3 ]
function fn() {
console.log(...arguments);
}
fn([1, 2, 3]);
代码 B,这失败了 SyntaxError: Unexpected token ...
此外,将 ...arguments 包裹在 () 中也无济于事。
function fn() {
var a = ...arguments;
}
fn([1, 2, 3]);
我假设在这两种情况下,我们都有一个RHS 查找。为什么可以将...arguments 传递给console.log(或其他函数),但不能将其分配给变量?
PS。我知道这永远不会出现在现实生活中的代码中,或者有其他更好的解决方案。我的问题纯粹是理论上/概念性的,仅限于理解为什么会发生不同的行为。
【问题讨论】:
-
你不能把它分配给
a而不是...吗?var a = arguments[0]; //Your array. -
@Arg0n 当然,正如我所指出的,这不是现实生活软件中的实际问题。当分配需要明确的
[ ]才能使其工作时,我只是惊讶于为什么...arguments会作为数组传递给console.log(无需将其包装在[ ]中)。
标签: javascript operators spread-syntax