为什么我的变量“c”发生了变化

Why my variable "c" has changed?

本文关键字:发生了 变化 我的 变量 为什么      更新时间:2023-09-26
var c = new Date(2015, 11, 25);
var d = c;
d.setFullYear(2000);
console.log(c);
console.log(d);

为什么我的变量"c"在此代码中发生了变化?

第 1 行:创建一个日期对象并将对它的引用分配给c

第 2 行:将 c(对日期对象的引用(的值复制到d

第 3 行:修改日期对象。它仍然由两个变量引用。

如果要创建新的日期对象并将其分配给d则需要显式执行此操作。

var c = new Date(2015, 11, 25);
var d = new Date(c);
d.setFullYear(2000);
console.log(c);
console.log(d);

变量c没有改变。更改的是c引用的对象,即 Date 实例。将 c 的值分配给 d 后,两个变量都引用同一个 Date 实例。两个变量,一个对象。

您可以像这样创建 Date 实例的副本:

var c = new Date(2015, 11, 25);
var d = new Date(+c);

或者更明确

var d = new Date(c.getTime());