2.1.2.1 确定性与引用透明 你有没有在凌晨三点,盯着一段看似无害的 JavaScript 函数,反复刷新页面、重放日志、比对前后两次调用结果——却发现:同样的输入,返回值却不一样? 不是网络抖动,不是后端响应异常,不是时间戳污染。 就是那个函数——它接收了 ,上一秒返回 ,下一秒返回 ; 它被传入 React 组件的 依赖数组,却让组件莫名其妙地反复重渲染; 它被塞进 Redux 的 selector,结果缓存形同虚设,性能优化反成负优化; 它被写进单元测试,本地跑过,CI 失败,同事的机器上又通过——而你翻遍代码,没找到任何 、 、 或 调用。 这不是玄学。这是确定性(Determinism)的溃败。