标签:技术分享 lap 访问 变量赋值 分享 优先 变量 引用 方法
以下代码输出什么? 为什么?
1 var a = {n:1}; 2 var b = a; 3 a = {n:2}; 4 a.x = a ; 5 console.log(a.x); 6 console.log(b.x);
1 var a = {n:1}; 2 var b = a; 3 a.x = a = {n:2}; 4 console.log(a.x); 5 console.log(b.x);
第一个问题:
a.x ---> {n:2,x:a}; b.x ---> undefined;
解答:a的值很清晰了,a第二次赋值以后变成了{n:2},随后添加了x属性指向自身。而对于b,在a第二次赋值以后,由于js中给变量赋值为object类型时,变量中存储的是对这个object的引用。
此时,a指向{n:2} ,而b指向了{n:1} ,a和b指向不同的对象,因此,在a上添加属性对于b无影响,b.x自然就是undefined。
第二个问题:
解答:第三句里的主要难点在js运算符的优先级,访问属性、调用方法运算符"."的优先级高于赋值运算符。因此执行顺序是
标签:技术分享 lap 访问 变量赋值 分享 优先 变量 引用 方法
原文地址:http://www.cnblogs.com/huenchao/p/6229704.html