首页 > 解决方案 > Javascript ES6 递归函数

问题描述

我想知道这个递归函数如何在这个空数组(return n < 1 ? [])中返回数字而不从 推[n, ...countdown(n - 1)],或者它是如何推的?也许我不明白 es6 语法

function countdown(n){ return n < 1 ? [] : [n, ...countdown(n - 1)] }

console.log(countdown(5)) 日志:[5, 4, 3, 2, 1]

标签: javascriptarraysfunctionrecursiontask

解决方案


此特定上下文中的-prefix 语法...(称为“扩展语法”)将...-prefixed 数组的元素直接放入周围的数组中。

[ 5, ...[4, 3, 2, 1] ]

是相同的

[5, 4, 3, 2, 1]

这就是这里正在发生的事情。countdown(从基本情况到)的返回值countdown(5)如下所示:

[]
[1, ...[]]             => [1]
[2, ...[1]]            => [2, 1]
[3, ...[2, 1]]         => [3, 2, 1]
[4, ...[3, 2, 1]]      => [4, 3, 2, 1]
[5, ...[4, 3, 2, 1]]   => [5, 4, 3, 2, 1]

推荐阅读