Seb*_*ian 3 javascript higher-order-functions ecmascript-6 arrow-functions
我在这里有一个高阶sorta函数.
虽然这按预期工作:
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
Run Code Online (Sandbox Code Playgroud)
这里,当我返回一个箭头功能时,它不起作用:
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
Run Code Online (Sandbox Code Playgroud)
我知道箭头功能是松散的,这就是为什么我在这里尝试在parantheses中返回它().没有它们也行不通.
来自MDN:
箭头函数表达式具有比函数表达式较短的语法,并且不结合其自身的
this,arguments,super,或new.target.
箭头函数不会将arguments对象绑定到它们的主体.您的函数依赖于使用arguments,因此它不能用作箭头函数.
如上面的评论中所建议的,您可以使用...args:
var square = (a) => a * a;
var callAndLog = (func) => {
return (...args) => {
var res = func.apply(undefined, args);
console.log("Result is: " + res);
return res;
};
};
var squareAndLog = callAndLog(square);
squareAndLog(5); Run Code Online (Sandbox Code Playgroud)
我知道箭头函数是松散的,这就是为什么我在这里尝试在parantheses()中返回它.
将箭头函数括在括号中对其行为没有影响.它会有很少(如果有的话)情况.
箭头函数没有arguments对象,您可以使用其余参数语法( ...) ,如下所示:
var square = (a) => a * a;
var callAndLog = (func) => {
return ((...args) => {
var res = func.apply(undefined, args);
console.log("Result is: " + res);
return res;
})
};
var squareAndLog = callAndLog(square);
squareAndLog(5);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1136 次 |
| 最近记录: |