浏览器localStorage计数不增长?日期预订功能成本计算异常
问题核心原因
- 计数重置逻辑放在了for循环内部,每次遍历单日都会把
dayscost0的值重置为0,导致之前的累加结果被清空,无法正确统计符合条件的总天数。 - 频繁读写localStorage没有必要,完全可以先在内存中完成计数,最后再一次性写入存储,性能和稳定性都更高。
修正后代码示例
// 循环开始前先初始化计数,不要放在循环内 let dayCost0Count = 0 const PRICE_RANGE_START = 1634648400000 const PRICE_RANGE_END = 1639746000000 for (let i = 0; i < daysDifference; i++) { const dayDot = startTime + (i * 86400000) // 判断是否落在指定价格区间 if (dayDot >= PRICE_RANGE_START && dayDot <= PRICE_RANGE_END) { dayCost0Count++ console.log('dayscost0 命中,当前计数:', dayCost0Count) } } // 计数完成后一次性写入localStorage localStorage.setItem("dayscost0", dayCost0Count.toString()) // 后续计算总费用直接读取即可:const total = dayCost0Count * 单日单价
额外优化建议
- 如果后续需要配置多个价格区间,可以把时间范围和对应单价抽成数组配置,无需逐个硬写判断逻辑,可维护性更强。
- 计算日期间隔时建议额外校验时区问题,避免跨时区场景下日期计算偏差。
内容的提问来源于stack exchange,提问作者blindmouse
相关产品推荐
相关产品推荐

