这是来自nodechool的功能性JavaScript研讨会。这里是代码,因为它出现在那里:这个递归函数是如何结束的?
function toUpperArray(items) {
if (!items.length) return [] // end condition
var head = items[0] // item to operate
head = head.toUpperCase() // perform action
var tail = items.slice(1) // next
return [head].concat(toUpperArray(tail)) // recursive step
}
toUpperArray(['hello', 'world']) // => ['HELLO', 'WORLD']
我不明白“最终条件”如何工作。我认为条件是寻找items.length为0,但它然后返回一个空数组?我试图通过让它不返回任何东西来运行它,这会返回undefined,从而将未定义的数组添加到最终数组中,但我不确定为什么返回一个空数组修复了这个问题。我期望最后一个数组中的最后一个项目是一个空数组。
而且,我从来没有见过一个条件未使用大括号。这很重要吗?
因为'[head] .concat([])'会返回'[head]'。 –
另外'{}'是只有一个语句的情况下可选的。 –
在MDN上阅读关于“if”的信息以获取大括号https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/if...else – epascarello