请教JavaScript函数中map方法内的第二个return语句作用
解答
Array.prototype.map() 是JavaScript数组的内置遍历方法,它的核心运行逻辑是:遍历原数组的每一个元素,将回调函数返回的处理结果按顺序收集,最终生成一个长度与原数组完全一致的新数组。这就要求传入map的回调函数,必须为每一个遍历到的元素返回对应的值,否则map生成的新数组元素会默认是undefined。
你给出的代码里一共出现了两层return,作用完全不同:
- 最外层的
return是spinWords箭头函数的返回值,作用是将「拆分字符串为单词数组→map处理每一个单词→拼接处理后的数组为新字符串」的完整运算结果返回给函数调用方。 - map内部的
return是传入map的匿名回调函数的返回值,作用是把单个单词的处理结果返回给map收集:如果当前单词长度大于4,就返回反转后的单词,否则直接返回原单词。
如果去掉map内部的这个return,回调函数没有显式返回值,map最终会得到全是undefined的数组,拼接后完全无法达到反转长单词的需求。
补充:如果map的回调使用单行箭头函数写法,可以省略显式的return,因为单行箭头函数会默认把表达式的运算结果作为返回值,简化后代码如下,运行效果和原代码完全一致:
let spinWords = str => str.split(' ') .map(string => string.length > 4 ? string.split('').reverse().join('') : string) .join(' ')
内容的提问来源于stack exchange,提问作者ddowy
相关产品推荐
相关产品推荐

