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

如何实现计数器递减时保持非负,返回0而非undefined?

计数器递减到0后显示undefined的修复方案

当前计数器的递增功能正常,但递减到0后继续点击减号按钮,页面会显示undefined。原因是sub函数仅在counter >= 1时执行递减并返回值,当counter为0时函数没有返回值,导致赋值给DOM元素的内容为undefined。

解决方案

修改sub函数,确保无论counter当前值是多少,函数都返回有效数值,同时保证counter不会低于0。以下是两种简洁的实现方式:

方式一:使用Math.max限制最小值

let counter = 0;

const add = (function() {
  return function() {
    counter += 1;
    return counter;
  }
})();
const sub = (function() {
  return function() {
    counter = Math.max(0, counter - 1); // 强制counter最小为0
    return counter;
  }
})();

function addFunction() {
  document.getElementById("demo").innerHTML = add();
}

function subFunction() {
  document.getElementById("demo").innerHTML = sub();
}

方式二:保留原判断逻辑,始终返回counter

let counter = 0;

const add = (function() {
  return function() {
    counter += 1;
    return counter;
  }
})();
const sub = (function() {
  return function() {
    if (counter >= 1) {
      counter -= 1;
    }
    return counter; // 无论是否执行递减,都返回当前counter值
  }
})();

function addFunction() {
  document.getElementById("demo").innerHTML = add();
}

function subFunction() {
  document.getElementById("demo").innerHTML = sub();
}

两种方式都能避免undefined的出现,同时让计数器停留在0不再继续递减,CSS和HTML代码无需修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 04:53:30