2016-10-17 9 views
1

これは簡単な質問ですが、なぜvar1とvar2が定義されていないのですか?Javascriptのパラメータ付きクロージャ

私は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

あなたは何も受け入れません。 – Li357

+0

どのようにパラメータを渡すことができますか? – Samy

+0

直ちに起動しないでください。 – Li357

答えて

3

あなたは括弧を(使用)関数の後に、それはすぐに実行されます。 この場合、パラメータは渡されていません。

2つの方法があります。

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

利用可能なクロージャを呼び出す必要があります。

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)());

関連する問題