Xin's blog Xin's blog
首页
  • 前端文章

    • HTML
    • CSS
    • JavaScript
    • Vue
    • 组件与插件
    • CSS扩展语言
  • 学习笔记

    • 《JavaScript教程》笔记
    • 《JavaScript高级程序设计》笔记
    • 《ES6 教程》笔记
    • 《Vue》笔记
    • 《TypeScript 从零实现 axios》
    • 《Git》学习笔记
    • TypeScript笔记
    • JS设计模式总结笔记
  • 前端框架面试题汇总
  • 基本面试题
  • 进阶面试题
  • 其它
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 前后端联调
  • mock.js
  • 奇技淫巧
  • 分类
  • 标签
  • 归档
关于
GitHub (opens new window)

Xin

英雄可不能临阵脱逃啊~
首页
  • 前端文章

    • HTML
    • CSS
    • JavaScript
    • Vue
    • 组件与插件
    • CSS扩展语言
  • 学习笔记

    • 《JavaScript教程》笔记
    • 《JavaScript高级程序设计》笔记
    • 《ES6 教程》笔记
    • 《Vue》笔记
    • 《TypeScript 从零实现 axios》
    • 《Git》学习笔记
    • TypeScript笔记
    • JS设计模式总结笔记
  • 前端框架面试题汇总
  • 基本面试题
  • 进阶面试题
  • 其它
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 前后端联调
  • mock.js
  • 奇技淫巧
  • 分类
  • 标签
  • 归档
关于
GitHub (opens new window)
  • HTML

  • CSS

  • JavaScript

    • 知识点

      • new命令原理
      • ES5面向对象
      • ES6面向对象
      • 多种数组去重性能对比
      • 比typeof运算符更准确的类型判断
      • 可选链操作符
      • 三点运算符
      • cookies,sessionStorage和localStorage的区别?
      • forEach()函数究竟会不会修改原数组?
      • 宏任务与微任务
      • Promise实现原理
      • this指向
      • 递归函数返回undefined
      • 使用JS的FileReader对象读取blob对象二进制数据
      • clipboard 剪切板属性
    • 方法

  • Vue

  • 组件与插件

  • css扩展语言

  • 学习笔记

  • 前端
  • JavaScript
  • 知识点
ctrlwin
2022-02-09

递归函数返回undefined

# 递归函数返回undefined

    var arr = [];
    function test(arr) {
        if (arr.length >= 5) {
            return arr
        }
        arr.push('1');
        test(arr, n);
    }
    var bee = test(arr)
    console.log(bee); // undefined
1
2
3
4
5
6
7
8
9
10

期望bee的返回值是数组,但实际返回确实undefined。

查询原因后才发现调用递归的地方也需要return,否则会导致递归的最深层一个函数调用时有值,但是最外层的函数返回值确实undefined。

最后一次进行递归操作的时候值是返回了,但只返回到了自己调用的函数里,而最初的函数是没有返回值的,所以是undefined,如果想要函数最后一次计算所得值,就需要在每次调用该函数时进行return,每一次return都是把最新的函数调用返回到外层的函数调用,所以通过调用函数就能拿到值了。

上面代码修改后:

    var arr = [];
    function test(arr) {
        if (arr.length >= 5) {
            return arr
        }
        arr.push('1');
        return test(arr, n);
    }
    var bee = test(arr)
    console.log(bee); // ['1','1','1','1','1']
1
2
3
4
5
6
7
8
9
10

参考链接:递归函数返回undefined (opens new window)

在GitHub上编辑 (opens new window)
#js
上次更新: 2/18/2022, 5:29:56 PM

← this指向 使用JS的FileReader对象读取blob对象二进制数据→

最近更新
01
createElement函数创建虚拟DOM
05-26
02
clipboard 剪切板属性
05-26
03
vue的权限管理
05-16
更多文章>
Theme by Vdoing | Copyright © 2021-2022 Xin | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×