var a = { n : 1 };
var b = a;
a.x = a = { n : 2 };
console.log( a.x ); // undefined
console.log( b.x ); // Object { n = 2 }
我的想法是这样的:
var a = {
n : 1,
x : a = {
n : 2
}
}
不知道我的想法有没有错误的地方,如有,希望能帮我指出,可以帮我解释下吗?谢谢!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
这问题已经有人问过了,还有详细说明
https://segmentfault.com/q/10...
分析的文章在这里从一个简单例子来理解js引用类型指针的工作方式
不懂,等答案了。这东西没事研究行,千万别这么写,否则你老板准开了你!!
在浏览器上试一下
f12 在控制台执行一下就粗来了

var b=a,这句表明b和a指向同一个引用地址,a.x={n:2},表明在这个地址上加上一个属性,因为b也指向这个地址,所以b的值也相应改变。后面a={n:2}重新给a指向一个新的地址
指针和赋值的区别
首先程序先预解释 声明了一个变量 var a var b
然后执行程序
第一步 a = { n : 1 } //给 a 赋值了一个地址1111 这个地址1111指向一个堆内存 { n:1}
第二步 b = a;// 是把 地址1111 这个地址赋值给了 b 既a,b指向了同一个地址1111
第三步有一个连等 可以拆分为
a.x = { n : 2 };// a.x 是给地址1111的对象添加了一个属性x:{n:2} ;
console.log( a.x ); // 此时的a = { n:2 } 所以为undefined
console.log(b.x); //此时的b= { n : 1,x : a = { n : 2 }} x指向一个对象 所以为Object {n:2}
这是我的理解:https://segmentfault.com/a/11...