当前位置: 代码迷 >> Web前端 >> 分析一个连续赋值模式的代码
  详细解决方案

分析一个连续赋值模式的代码

热度:57   发布时间:2012-10-30 16:13:36.0
分析一个连续赋值形式的代码

今天小何在群里面提出这样问题:

?

var a={};
a.b = a = function(){}
alert(a.b); //undefined

?

一个连续赋值将问题变得有些复杂,将上面稍作变形

?

var a={};var a1 = a;
c = a.b = a = function(){}
alert(c);  //function(){}
alert(a1.b);  //function(){}

?

a.b是在对象{}的属性列表里增加一项属性,因为"."的运算优先级高,这个工作在赋值运算之前。其他的工作就如同连续赋值一样,自右向左进行。由于a已经指向了其他对象,a.b变为undefined;a1指向的是原对象,所以a1.b仍然可以访问,且为匿名函数。

?

  相关解决方案