论坛首页 Web前端技术论坛

写了10年Javascript未必全了解的连续赋值运算

浏览 31981 次
该帖已经被评为良好帖
作者 正文
   发表时间:2010-10-17  
结尾的例子和前面的连续赋值没有关系啊。。。
b在函数内就不是一个局部变量。。默认就是全局变量。 执行后变量也就有值了。。
0 请登录后投票
   发表时间:2010-10-17  
谢谢clue、lifesinger,RednaxelaFX的深入讨论。尤其是RednaxelaFX竟然深入到了虚拟机,学习了!
0 请登录后投票
   发表时间:2010-10-18  
简单的问题复杂化,lz没事做
0 请登录后投票
   发表时间:2010-10-18  
这么写有什么巧妙的地方吗?有使用价值吗?
0 请登录后投票
   发表时间:2010-10-18  
前面挺好,结束的地方不对,不写var 的变量就是全局变量。
0 请登录后投票
   发表时间:2010-10-18   最后修改:2010-10-18
西门吹牛 写道
这么写有什么巧妙的地方吗?有使用价值吗?


这种写法在新发布的jQuery1.4.3中1833行
elemData[ eventKey ] = elemData = function(){};

至于巧妙或价值可联系jQuery作者:http://ejohn.org/blog/
0 请登录后投票
   发表时间:2010-10-18  
lifesinger 写道
挺有意思,尝试分析了下:

http://lifesinger.org/blog/2010/10/a-x-a/

哇 ,射雕我在javaeye第一次见你发言呢……
0 请登录后投票
   发表时间:2010-10-20  
‘.’运算符的优先级高于‘=’运算符
0 请登录后投票
   发表时间:2010-10-20   最后修改:2010-10-20
var a = {n:1};           //把a的值赋成 {n:1};        
a.x = a = {n:2};        //把a的值赋成 {b:2};
                              //然后要把a.x的值 赋成a也就是({b:2}); 但a中没有x这个 所以undefined
                              //第二句改成a.x = a = {n:2,x{}}; 
                              //便会得出 a.x= object a.x.n=2;
                              //{n:1};  被覆盖了...
alert(a.x); // --> undefined 

测试了好几便终于搞明白了;
用下面的代码验证一下,就明白由了...

function init(){
				var a = {n:1,x:{}};   
				var b
				alert("a.x="+ a.x);
				alert(b);
				a.x = b = {n:2};   
				alert (a.x)
				alert("a.x.n=" +a.x.n); 
				alert("b.n=" +b.n)
			}

0 请登录后投票
   发表时间:2010-10-20  
跟 i=i++类似。。。。
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics