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

如何为新变量赋值日期并保持原日期变量恒定?

问题根源

在JavaScript中,Date属于引用类型,当你直接把todayDate赋值给其他变量时,并没有复制整个日期对象,只是传递了对象的内存地址。这意味着todayDate、yesterdayDate、next30daysDate其实指向同一个内存中的Date实例,修改任何一个变量的日期值,都会同步影响所有指向该实例的变量。

解决方案

要保持todayDate恒定,你需要为每个新变量创建原Date对象的独立副本,常用方法如下:

方法1:利用Date构造函数复制

直接将原Date对象传入新的Date()构造函数,会生成一个全新的Date实例:

var todayDate = new Date();

// 创建todayDate的独立副本
var yesterdayDate = new Date(todayDate);
yesterdayDate.setDate(yesterdayDate.getDate() - 1);

// 再次创建todayDate的独立副本
var next30daysDate = new Date(todayDate);
next30daysDate.setDate(next30daysDate.getDate() + 29);

方法2:通过时间戳复制

调用原Date对象的getTime()方法获取毫秒级时间戳,再用这个数值创建新的Date对象:

var todayDate = new Date();

var yesterdayDate = new Date(todayDate.getTime());
yesterdayDate.setDate(yesterdayDate.getDate() - 1);

var next30daysDate = new Date(todayDate.getTime());
next30daysDate.setDate(next30daysDate.getDate() + 29);

方法3:ES6扩展运算符(环境支持时可用)

如果你的运行环境支持ES6语法,可以用扩展运算符快速创建副本:

const todayDate = new Date();

const yesterdayDate = new Date(...todayDate);
yesterdayDate.setDate(yesterdayDate.getDate() - 1);

const next30daysDate = new Date(...todayDate);
next30daysDate.setDate(next30daysDate.getDate() + 29);

以上方法都会让新变量指向独立的Date实例,修改它们的值不会再影响todayDate。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 05:45:44