(() => 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
绑定(bind);调用它们时不会创建任何参数对象。
箭头函数表达式的计算结果为have their [[ThisMode]] set到lexical
,并且在被称为declaration instantiation时不会创建 arguments
object。甚至有一个特别的注释(18 a)指出“箭头函数从不具有参数对象”。