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

如何在Vanilla JS中重构现有价格计算函数

重构后的最优实现方案

// 价格档位配置,按阈值升序排列,后续新增档位直接插入对应位置即可
const PRICE_TIERS = [
  { maxCount: 3, unitPrice: 50 },
  { maxCount: 6, unitPrice: 40 },
  { maxCount: Infinity, unitPrice: 35 }
]
const CURRENCY_SYMBOL = '£'

// 独立价格计算逻辑,无DOM依赖,方便单独测试
function calculateTotalPrice(selectedCount) {
  const matchedTier = PRICE_TIERS.find(tier => selectedCount <= tier.maxCount)
  return (matchedTier.unitPrice * selectedCount).toFixed(2)
}

// 视图更新逻辑
function updatePriceView(numberSelected) {
  const totalEl = document.getElementById("total")
  totalEl.innerHTML = `${CURRENCY_SYMBOL}${calculateTotalPrice(numberSelected)}`
  totalEl.style.display = "block"
  document.getElementById("button").style.display = "block"
}

核心优化点

  • 消除重复逻辑:原代码三个分支重复的DOM赋值、金额格式化逻辑全部抽离统一处理,后续修改格式仅需调整一处
  • 配置与逻辑分离:档位阈值、单价、货币符号全部抽为独立配置,调整定价规则不需要修改业务逻辑,降低出错概率,新增档位仅需在PRICE_TIERS数组中增加对应配置项即可
  • 职责拆分:计算总价和更新视图的逻辑拆分为两个独立函数,价格计算逻辑无DOM依赖,单元测试成本大幅降低
  • 消除隐式全局依赖:把原函数隐式依赖的全局变量、DOM元素改为显式获取/传入,避免全局变量污染导致的异常问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 07:06:07