var a = {n: 1} var b = a; a.x = a = {n: 2} console.log(a.x); console.log(b.x);
什么结果,,解释一下
这个是数组?
你要这样问,我肯定说我不会
老题了, https://www.zhihu.com/question/41220520 https://segmentfault.com/q/1010000002637728
@T-Roc 不好意思写错了
和对象无关,我理解为对连等的解析和运算优先级,核心是 . 优先于 = 和 连等从右到左运行且等式左边的引用确定于运行前 a.x = a = {n: 2}
a.x = a = {n: 2}
a.x
a = {n:2}
等这行运行完了,现在a的指向是{n:2} ,b仍指向是有了新属性x的旧a,也就是{n:1,x:Object}
这样写程序是作死,作为题目还是可以一看的…浓浓的谭浩强风…错就错在容易忽略a.x优先级高这点
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
这个是数组?
你要这样问,我肯定说我不会
老题了, https://www.zhihu.com/question/41220520 https://segmentfault.com/q/1010000002637728
@T-Roc 不好意思写错了
和对象无关,我理解为对连等的解析和运算优先级,核心是 . 优先于 = 和 连等从右到左运行且等式左边的引用确定于运行前
a.x = a = {n: 2}a.x指向undefined先,此时a === b === {n:1, x:undefined}a = {n:2}把a的引用指向一个新对象{n:2} , 此时 新a === {n:2}, b === {n:1, x:undefined} === 旧a等这行运行完了,现在a的指向是{n:2} ,b仍指向是有了新属性x的旧a,也就是{n:1,x:Object}
这样写程序是作死,作为题目还是可以一看的…浓浓的谭浩强风…错就错在容易忽略a.x优先级高这点