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