我需要创建一个只能执行一次的函数,每次执行第一次之后,它都不会被执行。我从C++和Java那里了解到静态变量可以完成这项工作,但我想知道是否有更优雅的方法来做到这一点?
发布于 2012-10-04 01:20:18
UnderscoreJs有一个函数可以做到这一点,underscorejs.org/#once
// Returns a function that will be executed at most one time, no matter how
// often you call it. Useful for lazy initialization.
_.once = function(func) {
var ran = false, memo;
return function() {
if (ran) return memo;
ran = true;
memo = func.apply(this, arguments);
func = null;
return memo;
};
};
发布于 2016-03-14 18:12:06
谈到静态变量,这有点像闭包变量:
var once = function() {
if(once.done) return;
console.log('Doing this once!');
once.done = true;
};
once(); once();
然后,如果您愿意,可以重置函数:
once.done = false;
发布于 2012-10-04 01:19:28
var quit = false;
function something() {
if(quit) {
return;
}
quit = true;
... other code....
}
https://stackoverflow.com/questions/12713564
复制相似问题