Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否仍要将参数保存在函数中,直到用新参数调用同一函数来替换它?_Javascript - Fatal编程技术网

Javascript 是否仍要将参数保存在函数中,直到用新参数调用同一函数来替换它?

Javascript 是否仍要将参数保存在函数中,直到用新参数调用同一函数来替换它?,javascript,Javascript,假设我有一个函数名myFunA,当第一次调用该函数并向其传递参数时,该函数实际上存储了变量。每次调用该函数时,它都会返回相同的变量,直到我再次调用该函数并传递一个参数来替换以前的参数 function myFunA(input){ if(input exist){ storedVar = input //declare a variable and store the input } console.log(storedVar); } myFunA('First Input'); /

假设我有一个函数名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中有一个垃圾收集功能,可以废弃变量并释放内存,但是有什么方法可以防止呢

如果有人能让我知道路,我真的很感激。如果这是不可能实现的,最好还是确认一下

非常感谢。

Javascript函数非常有用。因此,您可以像设置任何其他变量一样设置函数的属性

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

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

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

如果您将if(输入存在)替换为if(输入),您的代码将打印您想要的值!如果第一次调用总是提供一个参数,那么您是对的。但是,如果第一个调用没有提供任何内容,那么它将返回错误。所以我觉得这有点不完整。我以前从没见过。哦。。。嗯,这太好了。永远不要想通过这种方式实现它。非常感谢!!这是真的,您的函数也可以存储空字符串,这很好。虽然这次我将使用尼娜的解决方案,因为它已经足够了。我会记下你的,以备将来使用。非常感谢:)。