1

次のような関数がある場合:

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

そして、f に渡したいパラメータの変数がある場合:

var parameter1;
var parameter2;

この関数呼び出しを変数に割り当てると:

var functionCallValue = f(parameter1,parameter2);

変数 parameter1 と parameter2 に割り当てた異なる値に応じて functionCallValue が確実に変化するようにするにはどうすればよいですか?

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 に答える