Javascript 是否仍要将参数保存在函数中,直到用新参数调用同一函数来替换它?
假设我有一个函数名myFunA,当第一次调用该函数并向其传递参数时,该函数实际上存储了变量。每次调用该函数时,它都会返回相同的变量,直到我再次调用该函数并传递一个参数来替换以前的参数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'); /
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(输入),您的代码将打印您想要的值!如果第一次调用总是提供一个参数,那么您是对的。但是,如果第一个调用没有提供任何内容,那么它将返回错误。所以我觉得这有点不完整。我以前从没见过。哦。。。嗯,这太好了。永远不要想通过这种方式实现它。非常感谢!!这是真的,您的函数也可以存储空字符串,这很好。虽然这次我将使用尼娜的解决方案,因为它已经足够了。我会记下你的,以备将来使用。非常感谢:)。