簡體   English   中英

如果我有一個分配給函數調用值的變量,如果函數調用的參數發生更改,是否可以更新該變量?

[英]If I have a variable, assigned to the value of a function call, can that variable be updated if the function call's parameters are changed?

如果我有一個函數,像這樣:

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

如果我有參數變量,我想傳遞給f:

var parameter1;
var parameter2;

如果我將此函數調用分配給變量:

var functionCallValue = f(parameter1,parameter2);

如何確保functionCallValue根據我分配給變量parameter1和parameter2的不同值而變化?

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

演示版

我想您需要的是關閉

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!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM