我想了解正常函数与箭头函数的行为。
箭头功能
function arrowFunc() {
return () => arguments
}
console.log(arrowFunc(1, 2, 3)(1))

正常功能
function normalFunc() {
return function() {
return arguments
}
}
console.log(normalFunc(1, 2, 3)(1))

两个结果都是相同的,但看起来像上面定义的arrowFunc考虑第一个arg列表,其中normalFunc考虑第二组arg列表。
还尝试了babel-compilation来理解差异,但看起来行为有所不同,如下所示:
Babel输出:
"use strict";
function arrowFunc() {
var _arguments = arguments;
return function() {
return _arguments;
};
}
console.log(arrowFunc(1, 2, 3)(1));
function normalFunc() {
return function() {
return arguments;
};
}
console.log(normalFunc(1, 2, 3)(1));

答案 0 :(得分:9)
预计结果都相同
不,他们不是。
从箭头函数的MDN页面的第一行(强调我的):
箭头函数表达式的语法短于函数 表达式,没有自己的
this
,arguments
,super
或new.target
。
然后在同一页面上:
箭头函数没有自己的
arguments
对象。因此,在 在这个例子中,arguments
只是对的参数的引用 封闭范围 [...]
注意:箭头函数永远不会有参数对象。 (原文如此)