无效 Date 在原生 JavaScript 中并不是所有输出都会报错:toString 会得到 Invalid Date,getDate 会得到 NaN,而 toISOString 需要输出合法的 ISO 字符串,无效日期没有合法 ISO 表示,所以会抛 RangeError。原生默认的 toJSON 对无效日期返回 null,JSON.stringify 调用它后会把该值序列化为 null,因此不能把 toString、toISOString 和 toJSON 三种输出当成同一种结果。本题适用于杭州西湖区台式电脑浏览器软件侧,排查范围限于只读现有代码、配置和去敏记录,不重做客户原操作,不修改生产页面或原业务数据;现场浏览器实际版本另核。

AI台式电脑工作台示意图
AI台式电脑维护示意图,非真实门店、技师或客户实拍。

观察时先定位 Date 的构造来源和后续调用链,再按不同方法的返回条件核对。若对象是无效日期,toString 的结果条件应为 Invalid Date;getDate 的结果条件应为 NaN;直接调用 toISOString 的结果条件应为抛出 RangeError;调用 toJSON 的结果条件应为返回 null;对包含该值的对象执行 JSON.stringify,结果条件应为该字段序列化为 null。观察记录应区分“字符串显示”“数值读取”“ISO 格式化”“JSON 序列化”四条路径,避免只用一条日志代替全部判断。若去敏记录只保留了序列化后的 null,仍需核对对象原值、toJSON 是否被覆盖、调用方是否替换结果。只有确认走了默认路径,才能把该现象归到无效 Date 的默认处理。

风险集中在调用方对返回类型的预期。若代码在未确认日期有效前直接调用 toISOString,RangeError 可能中断当前流程;若下游字段要求日期字符串,应先识别默认 toJSON 返回 null 的分支。JSON.stringify 写出的是 JSON 文本中的 null 字面量。把 Invalid Date、NaN、RangeError 和 null 混为一谈,会让日志判断、错误捕获和序列化约定出现偏差。针对本题,风险不是日期显示是否好看,而是不同原生方法对无效日期采用了不同输出或抛错策略,调用链必须按实际方法分别处理。

下一步,建议整理去敏材料:Date 的构造入参来源、无效日期的产生条件、toString、getDate、toISOString、toJSON 和 JSON.stringify 的调用位置与已有结果记录、错误栈、序列化前后字段形态,以及现场浏览器版本。材料只保留排障所需信息,去除客户业务数据和个人信息。可拨打 400-877-9605 咨询对接安排;电脑快修网是信息展示与第三方维修对接平台,该号码只作咨询,实际范围和安排需确认。