JavaScript中的基本公共/私人功能结构



我是JavaScript的新手。我想使用两个功能实现递归:一个公共,另一个私人。

在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);
}

您正在返回定义的函数本身。

只需执行它:

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

JSFIDDLE的一个工作示例。

希望它有帮助。

您返回一个函数,以便获得功能...

要定义私有功能,您必须像在Java中一样创建一个类,然后在内部制作魔术

function MyClass() {
    var idx = this;
    var my_private_member = 5;
    this.my_public_member = 0;
    function my_private_function() {
        idx.my_public_member = my_private_member; //keyword "this" here won't reference to MyClass, but to the private function, so we keep a reference of MyClass to be accessed by the private function
    }
    this.my_public_function = function() {
        my_private_function();
    }
}
var my_instance = new MyClass();

my_private_membermy_private_function无法访问

简单地将函数用于递归:

java和javascript是两个完全不同的东西。

function sumOfPrevious(n){
  if (n == 1)
    return 1;
  else
    return n + sumOfPrevious(n - 1);
}
// call the function
console.log(sumOfPrevious(10)); // 55

最新更新