Static variables
Here's how to create static (like in C) variables using self calling functions to store your static variables in a closure.
var myFun = (function() {
var called = false;
return function() {
if (!called) {
console.log("I've been called");
called = true;
}
}
})()
Abstract the idea
Here's a function that returns a function that only gets called once, this way we don't have to worry about adding boiler plate code to every function.
function makeSingleCallFun(fun) {
var called = false;
return function() {
if (!called) {
called = true;
return fun.apply(this, arguments);
}
}
}
var myFun = makeSingleCallFun(function() {
console.log("I've been called");
});
myFun(); // logs I've been called
myFun(); // Does nothing
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…