这是一个简单的问题,为什么var1和var2未定义。
我试图在javascript中学习闭包并添加了一个参数,但不确定为什么它是未定义的。
var closureFunction = function(var1,var2){
var privateVar = var1+var2;
console.log("Sum of "+ var1 +" and "+ var2+"");
return function(){return privateVar;}
}();
console.log(closureFunction(2,3));
答案 0 :(得分:3)
在函数后使用方括号()时,会立即执行。 在这种情况下,你没有传递任何参数。
它可以有两种方式。
var closureFunction = function(var1,var2){
var privateVar = var1+var2;
console.log("Sum of "+ var1 +" and "+ var2+"");
return function(){return privateVar;}
}(2,3); //prints 'Sum of 2 and 3'
console.log(closureFunction()); //prints '5'
或者您可以按步骤传递参数
var closureFunction = function(var1){
return function(var2 ){
console.log("Sum of "+ var1 +" and "+ var2+"");
return var1 + var2;
}
}(2); //just return a 'closure' function
console.log(closureFunction(3)); //prints 'Sum of 2 and 3 5'
或者你可以稍后再执行。
var closureFunction = function(var1){
return function(var2 ){
console.log("Sum of "+ var1 +" and "+ var2+"");
return var1 + var2;
}
};
var x = closureFunction(2); //return a 'closure' function
console.log(x(3)); //prints 'Sum of 2 and 3 5'
答案 1 :(得分:1)
你必须在关闭后调用它。
var closureFunction = function(var1, var2) {
var privateVar = var1 + var2;
console.log("Sum of " + var1 + " and " + var2 + "");
return function() {
return privateVar;
}
};
console.log(closureFunction(2, 3)());