You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

技术问询:如何在函数调用3次后返回true值

实现函数被调用3次后返回true的方案

我来帮你搞定这个需求!要实现一个函数被调用3次后返回true,核心思路就是用一个计数器来追踪调用次数,每次调用时递增计数,当计数达到3时返回true,之前的调用返回false(如果需要后续每3次都返回true,也可以调整逻辑)。

方案一:闭包实现(推荐,避免全局变量污染)

闭包能把计数器封装在函数内部,不会污染全局作用域,是更优雅的实现方式:

function createThreeCallChecker() {
  let callCount = 0;
  return function() {
    callCount++;
    // 第3次调用返回true,其余返回false
    return callCount === 3;
    // 如果需要每3次调用都返回true(比如第3、6、9次),可以改成:
    // return callCount % 3 === 0;
  };
}

// 使用示例
const checkThreeCalls = createThreeCallChecker();
console.log(checkThreeCalls()); // false(第1次调用)
console.log(checkThreeCalls()); // false(第2次调用)
console.log(checkThreeCalls()); // true(第3次调用)

方案二:全局变量实现(简单但不推荐)

如果你的场景非常简单,也可以用全局变量计数,但要注意变量名不要和现有代码冲突:

let callCounter = 0;
function checkThreeCalls() {
  callCounter++;
  return callCounter === 3;
}

// 使用示例
console.log(checkThreeCalls()); // false
console.log(checkThreeCalls()); // false
console.log(checkThreeCalls()); // true

结合你现有代码的场景(比如按钮点击3次触发逻辑)

看你提供的代码里有$("#btnSave").click(...)的片段,假设你想让这个按钮被点击3次后返回true(触发特殊逻辑),可以这样整合:

// 先创建计数检查函数
const isThirdBtnClick = createThreeCallChecker();

$("#btnSave").click(function() {
  // 执行你原有的错误检查逻辑
  hide_errors();
  const hasError = error_check($("#someInput"), ".error_orient") || 
                   error_check($("#anotherInput"), ".error_short");
  if (hasError) {
    return; // 有错误就终止执行
  }

  // 判断是否是第3次点击
  if (isThirdBtnClick()) {
    console.log("第3次点击,返回true!");
    // 这里写你需要的特殊逻辑,比如提交特殊请求等
    return true;
  } else {
    console.log("未到3次点击,执行原有保存逻辑");
    // 执行原有保存逻辑
    // ...
    return false;
  }
});

另外,注意你提供的error_check函数有个小bug:else分支的代码没有用大括号包裹,会导致逻辑错误,建议修正为:

// error checking function(修正后)
function error_check(data,_class){ 
  if(data.val()=="" || data.val()==0){ 
    data.parent().parent().addClass('has-error'); 
    $(_class).show(); 
    return true; 
  } else {
    data.parent().parent().removeClass('has-error'); 
    $(_class).hide(); 
    return false; 
  }
}

如果不加else的大括号,不管if条件是否成立,$(_class).hide(); return false;都会执行,这会覆盖掉if分支里的错误提示显示操作,导致错误提示无法正常展示哦!

内容的提问来源于stack exchange,提问作者John David

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:34:36