1

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

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

如果我有要传递给 f 的参数变量:

var parameter1;
var parameter2;

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

var functionCallValue = f(parameter1,parameter2);

如何确保 functionCallValue 根据分配给变量 parameter1 和 parameter2 的不同值而变化?

4

2 回答 2

0

functionCallValue被分配了函数的结果(返回值)f。(调用该函数,计算值并将结果传递给您的变量。)因此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

演示

于 2012-06-15T10:22:40.067 回答
0

我想你需要的是一个闭包

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!
于 2012-06-15T10:22:45.603 回答