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

JavaScript修改Date变量时两个关联变量同时变更问题求解

问题原因
  • JavaScript中的Date属于引用类型,执行let a = d时,并没有创建新的Date实例,只是让变量a和d指向了内存中的同一个Date对象
  • Date的setDate()是可变方法,调用时会直接修改调用该方法的Date实例本身,同时返回修改后的时间戳。你代码中调用a.setDate()时,实际修改的是a和d共同指向的同一个实例,所以d的值也会同步变更
解决方案

要避免修改原对象,只需要在赋值时先克隆出一个独立的Date实例即可,正确代码如下:

<html>
<script>
        const d= new Date();
        console.log(d);
        // 基于d创建全新的Date对象,两个变量指向不同的实例
        let a = new Date(d);
        a.setDate(a.getDate() + 2);
        console.log(a);
        console.log(d);
</script>
</html>

上述代码运行后会完全匹配你的预期输出,原变量d不会被修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 06:12:02