(() => console.log(arguments))(1,2,3);
// Chrome, FF, Node give "1,2,3"
// Babel gives "arguments is not defined" from parent scope
Run Code Online (Sandbox Code Playgroud)
根据Babel(以及我可以告诉TC39的初步建议),这是"无效的",因为箭头函数应该使用其父作用域作为参数.我能找到的唯一信息与此相矛盾的是一条评论说这被TC39拒绝,但我找不到任何支持这一点.
只是在这里寻找官方文档.
如果我们在普通函数内打印参数变量的输出:
var func = function() { console.log(arguments); }
func();
Run Code Online (Sandbox Code Playgroud)
结果是一个对象,其中包含有关上下文的信息(参数值、范围、函数位置...)
但是如果我们用粗箭头重现相同的函数,我们将永远不会得到声明的参数:
var func = () => { console.log(arguments); }
func();
// arguments is not defined
Run Code Online (Sandbox Code Playgroud)
谁能解释一下我们如何从箭头函数获取上下文数据?