为啥返回带有箭头函数的对象时,array.map 中需要 return 关键字?
Posted
技术标签:
【中文标题】为啥返回带有箭头函数的对象时,array.map 中需要 return 关键字?【英文标题】:Why is return keyword needed in array.map when returning an object with arrow function?为什么返回带有箭头函数的对象时,array.map 中需要 return 关键字? 【发布时间】:2022-01-23 21:57:50 【问题描述】:在这种情况下,为什么我们必须在 rawApiData.map 回调箭头函数中写 return
关键字?
protected assembleLCodeDealers(rawApiData): DealerLossCodeDealer[]
if (rawApiData)
return rawApiData.map(p =>
return
code: p.code,
id: p.id,
name: p.name
as DealerLossCodeDealer;
);
else
return [];
【问题讨论】:
我对这个问题感到困惑,你不知道map
是如何工作的吗?还是您对箭头函数的语法感到困惑?
如输入所示,assembleLCodeDealers
预计会产生一个数组,因此它必须返回一个数组。如果存在“什么都不做”的情况,则必须返回一个空数组,而不是通常的“什么都不返回,从而产生未定义”
在这种情况下,我需要了解为什么我们必须在 rawApiData.map 之前写 return。
因为否则assembleLCodeDealers
函数不会返回任何内容,而打字表明它必须这样做。 Array.map
创建一个新数组,仅此而已。
【参考方案1】:
您可能会对带有 1 个返回表达式的 arrow function shorthand syntax 感到困惑,这确实不需要显式的 return
。
但是如果你使用花括号,它会为多个表达式打开一个代码块,而不是一个要返回的对象。
只需将要返回的对象的花括号用括号括起来,以避免它们被解释为代码块:
rawApiData.map(p => (
code: p.code,
id: p.id,
name: p.name
) as DealerLossCodeDealer)
见advanced syntax
【讨论】:
以上是关于为啥返回带有箭头函数的对象时,array.map 中需要 return 关键字?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我不能在 JavaScript/ES6 中使用带有箭头函数的`new`? [复制]