js中多个Date对象变量间赋值互相影响

简介: function pageLoad() { var dtmNow = new Date(); var dtmDt1 = dtmNow; dtmDt1.
<head>
    <title></title>
    <script type="text/javascript">
        function pageLoad() {
            var dtmNow = new Date();
            var dtmDt1 = dtmNow;
            dtmDt1.setMinutes(20);
            var divContent = document.getElementById("divContent");
            divContent.innerHTML = "dtmDt1:" + dtmDt1.toLocaleTimeString() + "dtmNow:" + dtmNow.toLocaleTimeString();
        }
    </script>
</head>
<body onload ="pageLoad()">
    <div id="divContent">
    
    </div>
</body>

  页面初始化时获得当前时间给变量dtmNow,然后dtmNow变量又赋给dtmDt1,给dtmDt1的分钟设置成20,再打印出两个变量,结果发现两个变量值相等,即dtmNow也发生了变化,本意是不想dtmNow随着变化,所以才定义了dtmDt1变量,但现在dtmNow也改变了这是为什么呢?

  dtmNow是Date类型,Date是对象是引用类型,dtmNow赋给了dtmDt1,引用类型间的拷贝是将变量指向同一个实例,那dtmDt1也就指向dtmNow所指向的实例,当改变其中一个的值时其实改变的是同一个实例,自然另一个变量也会随之改变,这与值类型不同。

 

目录
相关文章
|
6月前
|
JavaScript 前端开发
js变量的作用域、作用域链、数据类型和转换应用案例
js变量的作用域、作用域链、数据类型和转换应用案例
|
6月前
|
存储 JavaScript 前端开发
js变量和常量的应用案例
js变量和常量的应用案例
40 1
|
16天前
|
JavaScript
为实例方法创建错误的引用(js的问题)
为实例方法创建错误的引用(js的问题)
11 0
|
16天前
|
JavaScript
为实例方法创建错误的引用(js的问题)
为实例方法创建错误的引用(js的问题)
|
JavaScript 索引
js的直接赋值导致在循环中赋值失败的问题
js的直接赋值导致在循环中赋值失败的问题
341 0
|
JavaScript 前端开发
javascript变量定义中var let const的区别
ECMAScript 变量是松散类型的,意思是变量可以用于保存任何类型的数据。每个变量只不过是一 个用于保存任意值的命名占位符。有 3 个关键字可以声明变量:var、const 和 let。
|
JavaScript 程序员 C语言
JS——声明式函数与赋值式函数
JS——声明式函数与赋值式函数
75 0
|
存储 JavaScript 前端开发
玩转JS基础——值和引用
在 JavaScript 中,数据类型整体上来讲可以分为两大类:基本类型和引用数据类型
169 0
|
JavaScript
js赋值的两种方式
js赋值的两种方式
|
JavaScript 存储 自然语言处理
JS学习系列 06 - 变量对象
上一节我们讨论了执行上下文,那么在上下文中到底有什么内容,为什么它会和作用域链扯上关系,JS 解释器又是怎么找到我们声明的函数和变量,看完这一节,相信大家就不会再迷惑了。变量对象就是执行上下文和作用域链中间的桥梁。
1150 0