不带括号的JavaScript箭头函数,例如functionName => {}

时间:2020-01-07 20:41:11

标签: javascript arrow-functions

我在使用javascript练习的网站上发现了此问题:

编写一个JavaScript程序以链接异步函数。

因此,您将获得一个包含函数的列表,并且必须创建一个执行数组每个函数的函数,我试图这样做:

let chainAsyncFunc = (arrayWithFunctions) => {
    return arrayWithFunction.map((func) => func())
}

但是他们对练习的回答是这样的:

const chainAsync = fns => {
  let curr = 0;
  const next = () => fns[curr++](next);
  next();
};

我不太了解

答案如下:

chainAsync([
  next => {
    console.log('0 seconds');
    setTimeout(next, 1000);
  },
  next => {
    console.log('1 second');
  }
]);

什么是“下一个=> {}” 如果它将是箭头函数,则即使没有参数,它也应如下所示=()=> {// code //}

2 个答案:

答案 0 :(得分:1)

只有一个参数时,lambda函数的参数周围的括号是可选的。因此,a => {}(a) => {}是等效的。当使用lambda时,必须加上括号:

  • 不带任何参数:() => { /* code */ }
  • 接受多个参数:(a, b) => { /* code */ }
  • 利用签名中的object destructuring。例如:
var exampleFunc = ({a, b}) => console.log(`A = ${a}, B = ${b}`)
exampleFunc({a: 1, b: 2})

这将打印:A = 1, B = 2

答案 1 :(得分:0)

在箭头功能中,有一些语法技巧可以使其变得更整洁。

例如

如果函数中只有一个参数,则无法括住括号。

const foo = param => {return param}

在您提到的示例中,如果返回行是一行,则可以通过键入单行函数而不必键入返回关键字来使代码更简洁。

const foo = param => param
/*This is equivilant to the example above*/

要了解更多信息,请检查此 link