如果我有一个变量,分配给函数调用的值,如果函数调用的参数被更改,那么该变量是否可以更新?

时间:2012-06-15 10:15:23

标签: javascript variables function-call

如果我有一个功能,就像这样:

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

如果我有参数变量,我想传递给f:

var parameter1;
var parameter2;

如果我将此函数调用分配给变量:

var functionCallValue = f(parameter1,parameter2);

我如何确保functionCallValue根据我赋给变量parameter1和parameter2的不同值而改变?

2 个答案:

答案 0 :(得分:0)

functionCallValue分配了函数f的结果(returnvalue)。 (调用该函数,计算值并将结果移交给您的变量。)因此functionCallValue不会自动更新,如果您更改参数(根本没有意义),您需要调用再次使用更改的参数运行。

对于类似自动更新的内容,您需要一个这样的闭包:

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

<强> Demo

答案 1 :(得分:0)

我想你需要的是a closure

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

var param1  = 40;
var param2  = 2;
var master  = function() { return servant(param1, param2) };

var result = master();        // 42.  
param1 = 2;
param2 = 40;
var anotherResult = master(); // still 42, because that's really the answer!