无论如何要在函数内部保存一个参数,直到用新参数调用相同的函数来替换它?

时间:2015-06-24 14:04:35

标签: javascript

假设我有一个函数名myFunA,当第一次调用该函数并向其传递一个参数时,该函数实际存储了该变量。每次调用此函数时,它都会返回相同的变量,直到我再次调用该函数并传递一个参数来替换上一个参数。

function myFunA(input){
 if(input exist){
  storedVar = input //declare a variable and store the input
 }
 console.log(storedVar);
}

myFunA('First Input'); // output will be 'First Input'.
myFunA(); // output will still be 'First Input'.
myFunA('Second Input'); // output will be 'Second Input'.
myFunA(); // As the variable is replaced, the output will still be 'Second Input'.

这可能吗?

我知道JavaScript中有一个垃圾收集功能可以废弃变量并释放内存,但无论如何都要阻止?

真的很感激,如果有人能让我知道的方式。如果无法做到这一点,那么确认它仍然是好事。

非常感谢你。

2 个答案:

答案 0 :(得分:2)

Javascript函数为first class objects。因此,您可以像设置任何其他变量一样设置函数的属性。

function myFunA(input) {
    if (input) {
        myFunA.storedVar = input;
    }
    console.log(myFunA.storedVar);
}

myFunA('First Input');  // First Input
myFunA();               // First Input
myFunA('Second Input'); // Second Input
myFunA();               // Second Input

答案 1 :(得分:0)

@NinaScholz的答案很好,但允许您在不调用函数的情况下更改存储的值。如果你想避免它,这是另一种模式:

var myFunA = (function() {
    var storedVar = null;
    return function(input) {
        if(typeof(input) != "undefined") {
            storedVar = input;
        }
        console.log(storedVar);
    };
})();