答案 0 :(得分:26)
两个选项:
静态变量以下是使用自调用函数将静态变量存储在闭包中的静态(如C语言)变量的创建方法。
var myFun = (function() {
var called = false;
return function() {
if (!called) {
console.log("I've been called");
called = true;
}
}
})()
空功能替换运行后将功能设置为空功能。
function callonce() {
console.log("I've been called");
arguments.callee = function() {};
}
抽象概念这是一个函数,它返回一个只被调用一次的函数,这样我们就不必担心将锅炉板代码添加到每个函数中。
function makeSingleCallFun(fun) {
var called = false;
return function() {
if (!called) {
called = true;
return fun.apply(this, arguments);
}
}
}
// Alternate implementation
function makeSingleCallFun(fun) {
return function() {
return fun.apply(this, arguments);
arguments.callee = function() {};
}
}
var myFun = makeSingleCallFun(function() {
console.log("I've been called");
});
myFun(); // logs I've been called
myFun(); // Does nothing
答案 1 :(得分:10)
答案 2 :(得分:3)
答案 3 :(得分:3)
答案 4 :(得分:0)