JavaScript中的基本公共/私有函数结构
我是JavaScript新手。我想使用两个函数实现递归:一个公共函数,另一个私有函数 在Java中,我总是这样实现递归JavaScript中的基本公共/私有函数结构,javascript,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
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))只会给我[函数:privateFunc]
为什么要这样做?我该如何解决这个问题?您需要声明嵌套函数,然后使用它,而不是返回嵌套函数
function sumOfPrevious(n){
function privateFunc(n){
if (n == 1)
return 1;
else
return n + privateFunc(n - 1);
}
return privateFunc(n);
}
您需要声明嵌套函数,然后使用它,而不是返回嵌套函数
function sumOfPrevious(n){
function privateFunc(n){
if (n == 1)
return 1;
else
return n + privateFunc(n - 1);
}
return privateFunc(n);
}
只需使用函数进行递归: JAVA和Javascript是两个完全不同的东西
function sumOfPrevious(n){
if (n == 1)
return 1;
else
return n + sumOfPrevious(n - 1);
}
// call the function
console.log(sumOfPrevious(10)); // 55
只需使用函数进行递归: JAVA和Javascript是两个完全不同的东西
function sumOfPrevious(n){
if (n == 1)
return 1;
else
return n + sumOfPrevious(n - 1);
}
// call the function
console.log(sumOfPrevious(10)); // 55
您将返回定义的函数本身 只需执行它:
function sumOfPrevious(n){
return (function privateFunc(n){
if (n == 1)
return 1;
else
return n + privateFunc(n - 1);
})(n);
}
jsfiddle上的一个工作示例
希望有帮助。您正在返回定义的函数本身 只需执行它:
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_成员
和my_private_函数
无法访问您返回一个函数,因此获得一个函数
要定义私有函数,您必须像在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_成员
和my_private_函数
无法访问您需要调用函数工作示例您需要调用函数工作示例