Javascript解释了以下语法

时间:2018-01-20 12:11:00

标签: javascript syntax ecmascript-6

有人可以解释以下JavaScript的语法:

const result = (x, y) => (z) => { 

  /* code area */

  return something;
}

我的假设:

  
      
  1. (x,y)=> (z)是对函数z的调用
  2.   
  3. (z)=> {}是对{}
  4. 内的任何内容的调用   

问题:

  1. 如果是这样,我对代码的流程会有什么期望?

    例如:首先调用z然后将值返回到匿名函数(x,y)=>

  2. 是否需要括号?

  3. 关于访问代码区域中的变量x,y和z,是否可以?

  4. 最后,有人可以给出一个基本的例子,说明如何使用/调用这种语法。

    如果我错过了什么,你可以找到完整的代码(我的语法是一个例子)here或者只是问我。

    提前致谢!

2 个答案:

答案 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_functionsArrow Functions语法。将其翻译为经典的ES5语法将如下所示:

function (x, y) {
  return function (z) {
    /* code area */

    return something;
  }
}

当然,code area可以访问变量x,y和z。 在这种情况下,唯一的区别是箭头功能没有自己的上下文,因此this将指父母'上下文(或window,如果没有)