小白提问,关于数组的引用问题

liyx9292 2017-05-08 12:04:13
var person1 = {age : 17};
var person2 = person1;
person1.age = 20 ;
console.log(person2.age) //20
---------------------------------
var person1 = {age : 17};
var person2 = person1;
var person1 = {age:20}
console.log(person2.age) //17

为什么下面那个person2的引用还是17呢。

同时在问一下,为什么数组属性的赋值为什么不能用var,比如

var person1 = {age : 17};
var person2 = person1;
var person1.age = 20 //这样就会出错
...全文
154 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
天际的海浪 2017-05-08
  • 打赏
  • 举报
回复
对象的引用关系只在对变量进行获取(读取)时才生效。 在对变量进行重新赋值(写入)时会断开与之前对象的引用关系,指向一个新的对象的引用地址。 这种行为是固定的,不像c语言的指针变量,可以任意使用对值的操作和对地址的操作。 var只是用来定义变量的,不是用来定义对象属性的,对象的属性直接赋值就行了,也不需要用var
liyx9292 2017-05-08
  • 打赏
  • 举报
回复
引用 1 楼 jslang 的回复:
对象的引用关系只在对变量进行获取(读取)时才生效。 在对变量进行重新赋值(写入)时会断开与之前对象的引用关系,指向一个新的对象的引用地址。 这种行为是固定的,不像c语言的指针变量,可以任意使用对值的操作和对地址的操作。 var只是用来定义变量的,不是用来定义对象属性的,对象的属性直接赋值就行了,也不需要用var
懂了,谢谢

87,923

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧