Javascript:单参数Array.map()的不同行为,取决于我是否使用花括号(不允许同时使用两种形式吗?)

问题描述 投票:0回答:1

我正在尝试Array.map()并得到了这个小片段,它确实按预期执行:

let cities = ["Buenos Aires", "Santa Fe", "Mar del Plata", "Mar de las Pampas"];

function urlify(string) {
  return string.split(" ").join("-").toLowerCase();
}

function functionalUrl(elements)  {
  return elements.map( element => urlify(element) );
}

console.log(functionalUrl(cities));

// ['buenos-aires', 'santa-fe', 'mar-del-plata', 'mar-de-las-pampas' ]

但是,如果我替换

return elements.map( (element) => urlify(element) );

return elements.map( (element) => { urlify(element); } );

(即,加上括号和花括号),它返回

[undefined, undefined, undefined, undefined]

我不了解这种行为,因为花括号/括号形式应该是“正确的”,并且仅在单参数函数的特定情况下才允许将它们删除(我认为吗?)。我在这里想念什么?

谢谢!

javascript arrays syntax functional-programming
1个回答
3
投票
elements.map( (element) => { urlify(element); } );

[当您执行上述代码时,您正在创建函数主体(假设要包含更多行代码),并且期望使用'return'关键字,但是如果您要返回单个值(单个结果的话)计算),在您的情况下

elements.map( (element) => urlify(element) );

那么您不必指定return关键字。

因此,使用括号的第二种情况的正确代码将是

elements.map( (element) => {return urlify(element)} );

第一个是不使用return关键字的速记语法,同样,如果您只有一个参数,则不必将参数包装在括号内。因此,更简洁的方法应该是

elements.map( element => urlify(element) );
© www.soinside.com 2019 - 2024. All rights reserved.