1.javascript的连等赋值,值得好好想一想。
在网上看到一个题目
var a = {n:3};
var b = a;
a.x = a = {n:6};
alert(a.x);
alert(b.x);
一开始我认为先弹出{n:6},再弹出undefined,当然不是这样。
why?我原先没有看清a.x的含义!a.x是a的新属性,当然我是美院出生,用图说话:
如图,a和b的指针一开始都指向{n:3}这个对象,a.x=a={n:6}--->属性访问表达式的优先级高于‘=’,解析器会先找到a和a.x的指针,没有被声明的变量会被创建,即a.x会被创建,然后指向Null,随后,a和a.x都指向{n:6},因为指向的对象是个json,a.x给json拓宽了x属性,x属性被赋值{n:6},所以b指向的对象的x属性就是{n:6},a指向了新对象{n:6},没有x属性,a.x=undefined。
2.昨天在网上看到了teambition团队以及他们的故事,有种美好的感觉,我觉得我要朝着这个方向去努力。多学勤学,自学能力才是最好的学习能力。