---
解读
let a={
n:1,
}
let b=a;
a.x=a={
n:2
}
console.log(a.x);
console.log(b)
运行结果。
undefined
{n:1,x:{n:2}}
题目知识点解读:
- js运行机制,基本数据类型存储在栈中,引用数据类型存储在堆内存中,按引用地址的操作.
- js运算优先级,a.x优先级高于后面的赋值运算。参考developer.mozilla.org/zh-CN/docs/…
//代码解读
var a = {n:1}//{n:1},开辟新的地址00xx,a指向地址00xx;
var b = a;//b指向地址00xx;
a.x = a = {n:2}
//a.优先级高于赋值,先执行a.x,此时改变地址00xx内容{n:1,x:undefined}
//{n:2}在开辟新的地址01xx,a指向地址01xx,再把01xx内容指向00xx的x元素
//此时01xx对应{n:2},00xx内容{n:1,x:{n:2}};
console.log(a.x);//01xx对应{n:2},没有x元素,所以a.x为undefined;
console.log(b);//00xx对应{n:1,x:{n:2}};
//运算优先级,()最高19,成员访问(优先级18),赋值优先级2。