【发布时间】:2016-01-27 04:43:34
【问题描述】:
var c = new Date(2015, 11, 25);
var d = c;
d.setFullYear(2000);
console.log(c);
console.log(d);
//为什么我的变量“c”在这段代码中发生了变化?
【问题讨论】:
标签: javascript date variables object var
var c = new Date(2015, 11, 25);
var d = c;
d.setFullYear(2000);
console.log(c);
console.log(d);
//为什么我的变量“c”在这段代码中发生了变化?
【问题讨论】:
标签: javascript date variables object var
第 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 之后,both 变量引用同一个 Date 实例。两个变量,一个对象。
您可以像这样复制 Date 实例:
var c = new Date(2015, 11, 25);
var d = new Date(+c);
或者更明确
var d = new Date(c.getTime());
【讨论】: