可以在箭头函数速记内使用for循环吗?

时间:2019-10-03 14:14:21

标签: javascript

我有以下带有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语句)?

2 个答案:

答案 0 :(得分:5)

否,这是不可能的,因为for statement不是expression

来自arrow functions

  

Function body

     

箭头功能可以具有“简洁的正文”或通常的“块正文”。

     

在简洁的正文中,仅指定一个表达式,该表达式成为隐式返回值。在块体中,必须使用显式的return语句。

答案 1 :(得分:-2)

可以在箭头函数的简写中使用for语句-只需用非简写函数将其包装:(()=>{ ...loop... })()(这是间接解决方案,但仍在问题框架中)

f = x=> ( (()=>{ for(let i=0; i<10; i++) console.log(i+x) })(), 5+x )

f(2);