簡體   English   中英

在 Javascript 中使用參數關閉

[英]Closure with parameter in Javascript

這是一個簡單的問題,為什么 var1 和 var2 undefined 。

我試圖在 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));

當您在函數后使用方括號 () 時,它會立即執行。 在這種情況下,您沒有在那里傳遞任何參數。

它可以有兩種方式。

   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'

一旦可用,您必須調用閉包。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM