首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JavaScript中只能调用一次的函数

JavaScript中只能调用一次的函数
EN

Stack Overflow用户
提问于 2012-10-04 01:18:10
回答 19查看 266.2K关注 0票数 132

我需要创建一个只能执行一次的函数,每次执行第一次之后,它都不会被执行。我从C++和Java那里了解到静态变量可以完成这项工作,但我想知道是否有更优雅的方法来做到这一点?

EN

回答 19

Stack Overflow用户

发布于 2012-10-04 01:20:18

UnderscoreJs有一个函数可以做到这一点,underscorejs.org/#once

代码语言:javascript
复制
  // 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;
    };
  };
票数 25
EN

Stack Overflow用户

发布于 2016-03-14 18:12:06

谈到静态变量,这有点像闭包变量:

代码语言:javascript
复制
var once = function() {
    if(once.done) return;
    console.log('Doing this once!');
    once.done = true;
};

once(); once(); 

然后,如果您愿意,可以重置函数:

代码语言:javascript
复制
once.done = false;
票数 12
EN

Stack Overflow用户

发布于 2012-10-04 01:19:28

代码语言:javascript
复制
var quit = false;

function something() {
    if(quit) {
       return;
    } 
    quit = true;
    ... other code....
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12713564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档