javascript - 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]
解决方案
此特定上下文中的-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]
推荐阅读
- amazon-web-services - 如何修复 aws elastick beanstalk 的 postgresql 版本错误?
- css - 在以下情况下,Router Link Active 不起作用,它们是否有任何替代方式来动态激活按钮?
- c++ - 错误 C1903 - 调用 offsetof 时无法从先前的错误中恢复
- php - 为什么 flashdata 在 Codeigniter 中不起作用
- python - 使用 pandas 数据框样式器更正行着色
- python - 为 Django CreateView 应用搜索/过滤下拉列表
- c - 这是释放作为结构一部分的多个动态分配的数组的正确方法吗?
- firebase - 使用 Firebase 使用推送 ID 时如何检查现有数据?
- vue.js - 访问动态子组件
- matlab - 在 MATLAB 中绘制时间序列数据