有关 ES6 箭头函数中“参数”的官方信息
Official information on `arguments` in ES6 Arrow functions?
(() => console.log(arguments))(1,2,3);
// Chrome, FF, Node give "1,2,3"
// Babel gives "arguments is not defined" from parent scope
根据 Babel(以及我可以告诉最初的 TC39 建议),这是"无效的",因为箭头函数应该使用它们的父范围作为参数。 我能够找到的唯一与此相矛盾的信息是一条评论,说这被 TC39 拒绝了,但我找不到任何支持这一点的东西。
只是在这里寻找官方文档。
Chrome、FF 和 node 在这里似乎是错误的,Babel 是正确的:
箭头函数的作用域中没有自己的arguments
绑定;调用它们时不会创建任何参数对象。
在此处查找官方文档
箭头函数表达式的计算结果是将其 [[ThisMode]] 设置为 lexical
的函数,当调用此类函数时,声明实例化不会创建arguments
对象。甚至还有一个特定的注释(18 a)指出"箭头函数永远不会有参数对象。
正如Bergi所指出的,箭头函数没有自己的arguments
变量。
但是,如果您确实想捕获箭头函数的参数,则只需使用 rest 参数即可
const myFunc = (...args) =>
console.log ("arguments", args)
myFunc (1, 2, 3)
// arguments [1, 2, 3]
其余参数可以与其他位置参数组合,但必须始终作为最后一个参数包含
const myFunc = (a, b, c, ...rest) =>
console.log (a, b, c, rest)
myFunc (1, 2, 3, 4, 5, 6, 7)
// 1 2 3 [ 4, 5, 6, 7 ]
如果你错误地在任何其他位置写入了 rest 参数,你将得到一个错误
const myFunc = (...rest, a, b, c) =>
console.log (a, b, c, rest)
myFunc (1, 2, 3, 4, 5, 6, 7)
// Error: Rest parameter must be last formal parameter
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- 使用Express捕获参数
- 参数变量出现ngTable指令问题
- AngularJS:我可以跳过函数参数回调吗
- 如何使用skip参数使用angular ui引导进行服务器端分页
- 要求未定义JS回调参数
- 我的jQuery插件参数没有正确启动,遇到了问题
- 获取@ResponseBody的一部分作为主干和Spring MVC控制器之间的参数
- jquery设置为使用参数运行
- Javascript”;类“;带有参数的扩展
- 为什么grunt contrib connect的中间件选项的第三个参数是未定义的
- 函数未将值作为参数传递
- 如何将参数传递到angularJs中的工厂
- JS:检查URL中的参数,然后迭代一个参数为var的函数
- 正在传递JSONP标头's数据参数到另一个文件中的AJAX请求
- MVC 3页面导航和使用javascript传递参数
- 从查询字符串参数推断出正确的数据类型
- 传递包含'%的参数'在URL中
- 为什么不'我们在javascript中使用函数参数的数据类型
- 有关 ES6 箭头函数中“参数”的官方信息