有人可以解释以下JavaScript的语法:
const result = (x, y) => (z) => {
/* code area */
return something;
}
我的假设:
- (x,y)=> (z)是对函数z的调用
- (z)=> {}是对{}
内的任何内容的调用 醇>
问题:
如果是这样,我对代码的流程会有什么期望?
例如:首先调用z然后将值返回到匿名函数(x,y)=>
是否需要括号?
关于访问代码区域中的变量x,y和z,是否可以?
最后,有人可以给出一个基本的例子,说明如何使用/调用这种语法。
如果我错过了什么,你可以找到完整的代码(我的语法是一个例子)here或者只是问我。
提前致谢!
答案 0 :(得分:3)
这与这段代码基本相同:
const result = function(x, y) {
return function(z) {
// do stuff
};
};
this
的处理与箭头功能的处理不同,但除此之外它是相同的。
因此,当你第一次调用它时会返回一个函数,但参数会被封闭在闭包内部,所以你可以在函数内部使用它们。
const partiallyApplied = result(3,4);
const value = partiallyApplied(7);
答案 1 :(得分:0)
这是来自ES6规范https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions的Arrow Functions
语法。将其翻译为经典的ES5语法将如下所示:
function (x, y) {
return function (z) {
/* code area */
return something;
}
}
当然,code area
可以访问变量x,y和z。
在这种情况下,唯一的区别是箭头功能没有自己的上下文,因此this
将指父母'上下文(或window
,如果没有)