仅执行一次的函数的分类

时间:2014-01-15 02:17:21

标签: function theory

是否有一个只执行一次的函数的官方术语或单词?我能想到的最简单的例子是像这样的闭包中的javascript函数。 (取自here

function createChance() {
  var chanceLeft = true;
  return function() {
      if (chanceLeft) {
          console.log("This was the only chance you had.");
          chanceLeft = false;
      } else {
          console.log('Sorry: you already used your chance');
      }
  };
}

var chance = createChance();
chance();
// This was the only chance you had.
chance();
// Sorry: you already used your chance

1 个答案:

答案 0 :(得分:1)

这称为idempotent函数。无论你多少次调用它,它将在初始运行后返回相同的结果。其他explanations有一个非常好的questions(但请注意对已接受的警告答案的评论)。

这篇blog帖子解释了几个幂等与非幂等场景。如果邮件将来消失,我会在下方粘贴一个片段。

购物车示例:

  
      
  • 非幂等:推送“下订单”会在数据库中创建新订单。
  •   
  • 幂等:推送“下订单”将订单4567从“购物车”移至“最终确定”状态。
  •   

真实世界的例子

  
      
  • 幂等:给我披萨。
  •   
  • 不是幂等:让我成为披萨。
  •   

密码检查示例

  
      
  • 幂等:根据数据库中的哈希检查密码
  •   
  • 非幂等:检查密码并增加错误登录尝试(如果错误)
  •   

安装软件示例

  
      
  • 非幂等:安装MongoDB
  •   
  • 幂等:安装MongoDB(如果尚未安装)
  •   

正如您可以通过这些示例和您的问题所看到的,幂等函数对第二,第三,万分之一等运行没有影响。它在许多应用程序中都是一种常见的范例,即使它没有考虑到“幂等”这个词的设计。