本文详解 react 中因类型混淆导致 `array(0)` 空数组的典型错误,聚焦 `date` 对象与数字误比较的问题,并提供可直接复用的修复方案与最佳实践。
在使用 React 构建动态月视图日历(如每月排班表、日程组件)时,一个常见需求是:根据当前选中的年份和月份,生成该月完整日期数组(每个元素为 Date 实例)。但初学者常会遇到函数返回空数组 Array(0) 的困惑——表面逻辑看似正确,实则隐藏着 JavaScript 类型比较的深层陷阱。
问题根源在于以下这行循环条件:
for (let jour = new Date(debutDuMois); jour <= dernierJourDuMois; jour.setDate(jour.getDate() + 1))
其中 jour 是 Date 对象,而 dernierJourDuMois 是通过 .getDate() 提取的纯数字(例如 31)。JavaScript 在执行 Date 恒为 false,导致循环体一次都不执行,jours 数组始终为空。
✅ 正确解法是:确保循环边界两端均为同类型值(推荐都为 Date 对象)。修改关键两处:
立即学习“Java免费学习笔记(深入)”;