多个lambda函数如何工作?

Win*_*ter 2 javascript ecmascript-6

我找到了一个脚本示例,其中有一行代码如下所示:

fn = (arg1) => (arg2) => {
    //do something with arg1 and arg2
}
Run Code Online (Sandbox Code Playgroud)

我想知道这里到底发生了什么,它看起来像一个"正常"的功能?

Nin*_*olz 5

它看起来像两个嵌套函数,其中外部函数返回带有闭包的内部函数arg1.

var fn = function (arg1) {
        return function (arg2) {
            //do something with arg1 and arg2
        };
    };
Run Code Online (Sandbox Code Playgroud)

var fn = function (arg1) {
        return function (arg2) {
            return arg1 + arg2;
        };
    };


var add4 = fn(4),
    add20 = fn(20);

console.log(add4(5));  //  9
console.log(add20(5)); // 25
Run Code Online (Sandbox Code Playgroud)

箭头功能:

箭头函数表达式比一个更短的语法  功能表达  ,并且不结合自己的  this参数,或  new.target.这些函数表达式最适合非方法函数,不能用作构造函数.


aei*_*eid 5

fn = (arg1) => (arg2) => {
    //do something with arg1 and arg2
}
Run Code Online (Sandbox Code Playgroud)

fn 是第一个anon函数的名称,它基本上是一个返回另一个函数的函数

它大致翻译成

var fn = function(arg1){
  return function(arg2){
    ... // do something 
  }
}
Run Code Online (Sandbox Code Playgroud)

注意到该this值会有所不同,因为它是一个箭头函数.