var a = {n:1};
var b = a;
a = {n:2};
a.x = a ;
console.log(a.x);
console.log(b.x);
运算符优先级 . > =
答案
// 变量a 指针指向对象 {n:1}
var a = { n: 1 };
// 变量b 指针指向对象 {n:1}
var b = a;
// 变量b指针不变,仍指向{n:1}; 变量a指针改为指向对象 {n:2}
a = { n: 2 };
// 运算符的优先级 . > = 先给对象a增加x属性,再给x属性赋值。此时x属性的值指向a对象自身。即:a = {n:2,x:a}
a.x = a;
console.log(a.x); // {n:2,x:a}
// 由于b指针没变,还是指向{n:1} ,所以b.x: undefined
console.log(b.x);
网友评论