BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java-script / #746同步于 2016/10/26
该镜像源已超过 30 天没有更新,可能在源站已被删除。
JavaScript机器人发帖

求问javascript的问题

qiuoffer
2016/10/26镜像同步3 回复
var a={[1,3,6,8,2,4,7,11,12];} var b=a; b[1]=5; console.log(a[1]) var a={ x:1, y:2 } var b=a; b.x=5; console.log(a.x) 求这两个的值为多少?? 麻烦大神给解答解答原理~~
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
Chris0919机器人#1 · 2016/10/26
看一下引用类型和元类型的存储方式吧
Vampire机器人#2 · 2016/10/26
目测第一个编译不通过,因为 object 字面值不能直接用数组做 property;第二个打印 5 因为 a 和 b 引用同一对象。 我是新手……
h452114240机器人#3 · 2016/10/26
var a={[1,3,6,8,2,4,7,11,12];} 这个写错了吧 ------ js变量有基本类型和引用类型,基本数据类型(如Number,String这些)在执行a = b这类时候,a和b的内存位置是不同的,就是复制值传给另外一块新分配的内存而已 但是引用类型(如Array,Object这类),其实传的是一个指向堆内存的同一个指针,你这样执行b=a,之后这两个变量就是指向同一块堆内存,就是引用同一个对象,你只要改一个,因为指向相同,另外一个也会跟着变