首页 > 代码库 > Javascript Date 类型的值传递与引用传递问题

Javascript Date 类型的值传递与引用传递问题

新建一个Date类型的变量 d1。

<span style="font-family:Microsoft YaHei;font-size:14px;">var d1 = new Date();
alert(d1);</span>

运行后页面上会弹出:   

Fri Sep 05 2014 16:40:50 GMT+0800


再新建一个变量 d2, 将 d1的值赋给d2,   把d2 的 年份设置为 2013,

<span style="font-family:Microsoft YaHei;font-size:14px;">var d2 = d1;
d2.setFullYear("2013");
alert(d1 + "/" + d2);</span>

运行后页面上会弹出:   

Thu Sep 05 2013 16:40:50 GMT+0800

Thu Sep 05 2013 16:40:50 GMT+0800


即使改为如下, 把d2 也声明为Date 类型, 结果仍然一样。

<span style="font-family:Microsoft YaHei;font-size:14px;">var d1 = new Date();
alert(d1);
<span style="color:#FF0000;">var d2 = new Date();</span>
d2 = d1;
d2.setFullYear("2013");
alert(d1 + "/" + d2);</span>

表明: Date 类型的这种直接赋值方式会变成引用传值, d1 , d2 两个变量指向同一个Date对象。

           要慎用 “=” 符号直接给对象赋值这种方式, 很大可能结果与自己预想的不一致,导致运算错误。






Javascript Date 类型的值传递与引用传递问题