为什么我的变量" c"已经改变?

时间:2015-10-27 16:38:59

标签: javascript date variables object var

changeArray

//为什么我的变量" c"在这段代码中有变化吗?

2 个答案:

答案 0 :(得分:2)

第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);




答案 1 :(得分:1)

变量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());