if (list.length >= 4) {
  toast('最多对比 4 件商品,请先移除一件');
  return;
}

商品对比最多放 4 个,选第 5 个时按钮点下去没反应,也没有任何提示,用户以为页面坏了,反复点了七八次。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。

原因不复杂,前端用数组存对比项,push 之前判断长度到 4 就直接 return,没给反馈。按钮状态也没置灰,看着还能点。

「对比列表上限」排查到最后往往是很小的一处差异,前面那些复杂猜测可以先放一放。改完隔一天再看一次,当场正常不代表能稳住。

测试环境和线上的差别,往往就在版本号和那几行被忽略的配置上。线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。

处理上按这个顺序:达到上限时把按钮设为 disabled,并给一行文字说明最多 4 个;超出时弹一条提示让用户先移除,别静默返回;对比栏要有删除按钮,保证有出口。

改完只确认一件事:选第 5 个时出现提示,按钮变灰,移除一个后又能继续添加。

作者 9823189