2016-10-17 5 views
1

Es ist eine einfache Frage, warum var1 und var2 undefiniert sind.Schließung mit Parameter in Javascript

Ich habe versucht, Verschlüsse in Javascript zu lernen und fügte einen Parameter, aber nicht sicher, warum es nicht definiert ist.

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

Sie übergeben keine. – Li357

+0

Wie kann ich Parameter übergeben? – Samy

+0

Rufen Sie es nicht sofort auf. – Li357

Antwort

3

Wenn Sie Klammern() nach einer Funktion zu verwenden, wird sie sofort ausgeführt. Und in diesem Fall haben Sie dort keinen Parameter übergeben.

Es kann zwei Wege gehen.

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' 

Oder Sie können in Schritten passieren Parameter

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' 

oder Sie können es später ausführen.

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

Sie müssen die Schließung aufrufen, sobald sie verfügbar ist.

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

Verwandte Themen