【发布时间】:2017-08-28 20:39:27
【问题描述】:
我这里有一点高阶排序函数。
虽然这按预期工作:
var square = (a) => a * a;
var callAndLog = (func) => {
return function () {
var res = func.apply(undefined, arguments);
console.log("Result is: " + res);
return res;
}
};
var squareAndLog = callAndLog(square);
squareAndLog(5); // Result is 25
这里,当我返回一个嵌入的箭头函数时,它不起作用:
var square = (a) => a * a;
var callAndLog = (func) => {
return (() => {
var res = func.apply(undefined, arguments);
console.log("Result is: " + res);
return res;
})
};
var squareAndLog = callAndLog(square);
squareAndLog(5); // Result is NaN
我知道箭头函数是松散的,这就是为什么我在这里尝试在括号() 中返回它。没有它们也行不通。
【问题讨论】:
-
squareAndLog(5); // Result is NaN— 我无法重现该问题。当我运行该代码时,它会引发异常:“ReferenceError:未定义参数 -
箭头函数do not bind arguments,所以在你的第二个例子中你没有应用你所期望的。请改用
(...args) => ...。请参阅this 和this 了解更多详情。
标签: javascript ecmascript-6 higher-order-functions arrow-functions