Javascript 如果我有一个变量,分配给函数调用的值,如果函数调用的参数发生变化,该变量是否可以更新?

Javascript 如果我有一个变量,分配给函数调用的值,如果函数调用的参数发生变化,该变量是否可以更新?,javascript,variables,function-call,Javascript,Variables,Function Call,如果我有一个函数,像这样: function f(x,y){ return x + y; } var asdf = (function(){ var param1 = 1; var param2 = 2; var result = param1+param2; function compute(){ result = param1 + param2; } return{ param1:function(x)

如果我有一个函数,像这样:

function f(x,y){
 return x + y;
}
var asdf = (function(){

    var param1 = 1;
    var param2 = 2;
    var result = param1+param2;

    function compute(){
        result = param1 + param2;
    }

    return{
        param1:function(x){
           param1 = x;
           compute();
        },
        param2:function(x){
           param2 = x;
           compute();
        },
        result:function(){
           return result;            
        }
    }
})();
console.log(asdf.result()); // logs 3

asdf.param1(3);

console.log(asdf.result());​ // logs 5
如果我有参数变量,我想传递给f:

var parameter1;
var parameter2;
如果我将此函数调用分配给变量:

var functionCallValue = f(parameter1,parameter2);
如何确保functionCallValue根据我分配给变量parameter1和parameter2的不同值而变化?

functionCallValue被分配给函数f的结果返回值。调用函数,计算值并将结果传递给变量。因此functionCallValue不会自动更新,如果您更改了毫无意义的参数,则需要使用更改后的参数再次调用函数

对于自动更新之类的东西,您需要这样一个闭包:

function f(x,y){
 return x + y;
}
var asdf = (function(){

    var param1 = 1;
    var param2 = 2;
    var result = param1+param2;

    function compute(){
        result = param1 + param2;
    }

    return{
        param1:function(x){
           param1 = x;
           compute();
        },
        param2:function(x){
           param2 = x;
           compute();
        },
        result:function(){
           return result;            
        }
    }
})();
console.log(asdf.result()); // logs 3

asdf.param1(3);

console.log(asdf.result());​ // logs 5

我想你需要的是


... 你可能需要用不同的方式来解释自己,或者提供一个例子;我不理解你的问题。不同的返回值取决于函数的算术运算。我使用的参数是一个数组,另一个函数从该数组拼接元素。我是否必须呼叫asdf.param1array;每次从中拼接一个元素时?每次需要结果时,当然必须首先更新参数。@user1456713如果我们帮助您解决了问题,请随时接受回答,以向其他StackOverflow用户表明您的问题已经解决。如果您有一些后续问题,请在评论中提问,或者最好打开一个新问题。对于这个相关问题,您有什么建议:我在嵌套循环中使用functionX的返回值,这就是为什么我想在浏览器崩溃时首先将其值赋给变量,因为functionX被多次调用。但是在loopY中,functionX的参数被更改,数组元素被删除,然后在下一次迭代中被恢复。是否有一种方法可以优化代码,即避免不断调用functionX?@user好吧,这在评论部分有点难以判断和评估。如果您对其中一个答案感到满意,我建议您通过接受其中一个答案来结束此问题,并针对后续问题提出一个新问题。