【问题标题】:Why my variable "c" has changed?为什么我的变量“c”发生了变化?
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

    • 嗯,这些年来,我从来没有想过在制作副本时只传递整个日期实例 :)
    【解决方案2】:

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

    【讨论】:

    • 是否只适用于 date() 方法?
    • @DragomirMandic 对于任何可以更改的对象也是如此。这是 JavaScript 中对象和对象引用的一般工作方式。
    猜你喜欢
    • 1970-01-01
    • 2016-10-18
    • 2011-01-26
    • 2011-02-23
    • 2022-12-02
    • 2012-06-03
    • 2018-12-24
    • 2023-03-26
    • 2013-05-13
    相关资源
    最近更新 更多