Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不带括号的JavaScript箭头函数,例如functionName=>;{}_Javascript_Arrow Functions - Fatal编程技术网

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

不带括号的JavaScript箭头函数,例如functionName=>;{},javascript,arrow-functions,Javascript,Arrow Functions,我在一个有javascript练习的网站上发现了这个问题: 编写一个JavaScript程序来链接异步函数 所以给你一个函数列表,你必须创建一个函数来执行数组中的每个函数,我试着这样做: let chainAsyncFunc = (arrayWithFunctions) => { return arrayWithFunction.map((func) => func()) } 但他们的答案是: const chainAsync = fns => { let cur

我在一个有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');
  }
]);
什么是“下一步=>{}”
如果它是一个arrow函数,它应该如下所示:next=()=>{//code/}即使在arrow函数中没有参数,也有一些语法技巧可以使它更简洁

例如

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

const foo = param => {return param}
在您提到的示例中,如果返回行是一行,则可以通过键入一行函数而不键入返回关键字来使代码更干净

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

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

当您有单个参数时,lambda函数参数周围的括号是可选的。所以,
a=>{}
(a)=>{}
是等价的。当lambda:

  • 不接受任何参数:
    ()=>{/*code*/}
  • 接受多个参数:
    (a,b)=>{/*code*/}
  • 在签名中利用。例如:

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

您在文章中多次描述更改的练习。它是不是一个
async
函数数组?为什么数组中的函数突然都支持
next
next=>{…}
相当于
(next)=>{…}
。不,与第一个代码段中的
const next
不同,它不是变量的赋值/初始化。这只是一个函数表达式,它是数组文本的一部分。这个练习没有说明“异步函数”的含义吗?这个练习听起来就像这样:编写一个JavaScript程序来链接异步函数。
var exampleFunc = ({a, b}) => console.log(`A = ${a}, B = ${b}`)
exampleFunc({a: 1, b: 2})