函数.arguments中没有ES6默认值?

hai*_*rbo 7 javascript ecmascript-6

如果我有这个ES6函数声明和调用:

function myFunction (arg1, arg2 = "bob") {
  console.log("arguments", arguments);
}

myFunction(1);
Run Code Online (Sandbox Code Playgroud)

...该console.log()语句只显示一个值为"1"的参数."鲍勃"无处可见.这是预期和/或期望的行为吗?我希望arguments对象中可以使用默认值.如果没有,有没有办法以其他方式动态获取所有参数+默认值?

提前致谢!

Ber*_*rgi 9

是的,这是预期和期望的.该arguments对象是传递给函数的值的列表,没有别的.

它并不是隐含地链接到参数变量(被赋予默认值),就像在草率模式下一样.

有没有办法以其他方式动态获取所有参数+默认值?

不.您拥有哪些参数以及它们是否具有默认初始化程序是静态的,您无需动态执行任何操作.你可以Object.assign([], arguments, [arg1, arg2])为你的示例功能做.