JavaScript数据类型及赋值问题 财富值36

2016-10-13 11:42发布

JavaScript生成对象并进行赋值弹出
相关代码如下:

var a=new Object(); a.value=1;   b=a; b.value=2; alert(a.value);

如何解释最终结果为2?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答

a是对象,所以a应该是保存了一个地址,这个地址指向了a存储的实际内容,b=a并不是将a指向地址的内容复制给b而是把a保存的地址给了b,即使得b与a指向同一个地址(a存储的实际内容),所以b.value=2设置的是a存储的实际内容,a存储的实际内容的值改变了,所以a.value也改变了。
详细的话可以百度下js传值和传址

段曼 - 我很好
2楼-- · 2016-10-13 11:34

(2) 变量复制的区别

当一个变量复制引用类型的值时,同样也会将存储在变量对象中的值复制一份放到为新变量分配的空间中。不同的是这个值的副本实际上是一个指针,而这个指针指向存储在堆中的一个对象。复制操作结束后,两个变量实际上将引用同一个对象。因此改变其中一个变量,就会影响到另一个变量

javascrip变量包含两种类型的值,一种为引用类型的值,一种是基本类型的值。引用类型包括:Array,Object,Function(可以这么理解,非基本类型的都是引用类型);5种基本类型包括:undefined,null,string,boolean,number

任意一本JavaScript的入门书籍都会告诉你答案——
引用类型变量的直接赋值只会将地址赋值,而不是重新生成个新的变量然后复制其内容。

(1) 基本类型和引用类型