如果我有一个功能,就像这样:
function f(x,y){
return x + y;
}
如果我有参数变量,我想传递给f:
var parameter1;
var parameter2;
如果我将此函数调用分配给变量:
var functionCallValue = f(parameter1,parameter2);
我如何确保functionCallValue根据我赋给变量parameter1和parameter2的不同值而改变?
答案 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!