假设我有一个函数名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中有一个垃圾收集功能可以废弃变量并释放内存,但无论如何都要阻止?
真的很感激,如果有人能让我知道的方式。如果无法做到这一点,那么确认它仍然是好事。
非常感谢你。
答案 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);
};
})();