javascript - JavaScript 中的基本公共(public)/私有(private)函数结构

标签 javascript

我是 JavaScript 新手。我想使用两个函数实现递归:一个是公共(public)函数,另一个是私有(private)函数。

在 Java 中,我总是这样实现递归

public int sumOfPrevious(int n){
 return addNumbers(n);
}

private int addNumbers(int n){
 if (n == 1)
  return 1;
 else
  return n + addNumbers(n-1);
}

然后调用 System.out.println(sumOfPrevious(5)) 返回 15

但是如何在 JavaScript 中实现类似的东西呢?

我试过这个:

function sumOfPrevious(n){
 return function privateFunc(n){
  if (n == 1)
    return 1;
  else
    return n + privateFunc(n - 1);
  };
}

但是调用 console.log(sumOfPrevious(5)) 只会给我 [Function: privateFunc]

为什么会这样,我该如何解决?

最佳答案

您需要声明嵌套函数然后使用它,而不是返回嵌套函数。

function sumOfPrevious(n){
  function privateFunc(n){
    if (n == 1)
      return 1;
    else
      return n + privateFunc(n - 1);
  }
  return privateFunc(n);
}

关于javascript - JavaScript 中的基本公共(public)/私有(private)函数结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21357264/

相关文章:

javascript - 为什么 toDataURL 在移动端获取不到 Canvas 内容?

javascript - 全局监听 Backbone.js Model.save

javascript - 在 AngularJS 中读取 JSON 响应

javascript - 动态更改 Bootstrap 弹出窗口的模板

javascript - 如何在javascript中 trim 末尾不需要的连续字符串?

javascript - 添加 classList.add 到自定义 HTML5 标签的第 n 个子元素

javascript - 如果 URL 以 "blob:"开头,如何使用 Python 3/Selenium 下载图像?

javascript - Heroku 无法运行 Node ES6 代码

javascript - 使用 jQuery 或 Mootools 显示 Rokbox 弹出窗口

javascript - 如何让ckeditor停止删除空的div