我正在尝试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]
我不了解这种行为,因为花括号/括号形式应该是“正确的”,并且仅在单参数函数的特定情况下才允许将它们删除(我认为吗?)。我在这里想念什么?
谢谢!
elements.map( (element) => { urlify(element); } );
[当您执行上述代码时,您正在创建函数主体(假设要包含更多行代码),并且期望使用'return'关键字,但是如果您要返回单个值(单个结果的话)计算),在您的情况下
elements.map( (element) => urlify(element) );
那么您不必指定return关键字。
因此,使用括号的第二种情况的正确代码将是
elements.map( (element) => {return urlify(element)} );
第一个是不使用return关键字的速记语法,同样,如果您只有一个参数,则不必将参数包装在括号内。因此,更简洁的方法应该是
elements.map( element => urlify(element) );