我有以下带有for循环的箭头功能
f = x=> { for(let i=0; i<10; i++) console.log(i+x); return 5+x }
f(2);
我想使用箭头函数速记并删除return
语句-但是,我唯一的方法是删除for
(并使用一些替代循环)
f = x=> ( [...Array(10)].forEach((y,i)=> console.log(i+x)), 5+x )
f(2);
但是我想使用“原始” for
,但是当我这样做时会出现错误:
f = x=> ( for(let i=0; i<10; i++) console.log(i+x), 5+x )
f(2);
意外的令牌“ for”
是否可以在箭头函数速记中使用for
语句(返回的值不带显式return
语句)?
答案 0 :(得分:5)
否,这是不可能的,因为for
statement不是expression。
Function body
箭头功能可以具有“简洁的正文”或通常的“块正文”。
在简洁的正文中,仅指定一个表达式,该表达式成为隐式返回值。在块体中,必须使用显式的
return
语句。
答案 1 :(得分:-2)
可以在箭头函数的简写中使用for
语句-只需用非简写函数将其包装:(()=>{ ...loop... })()
(这是间接解决方案,但仍在问题框架中)
f = x=> ( (()=>{ for(let i=0; i<10; i++) console.log(i+x) })(), 5+x )
f(2);