代码一:
var a=function{alert('a');}
var b=function{alert('b');}
(a,b)()代码二:
var a=new function{alert('a');}
var b=new function{alert('b');}
(a,b)()
var a=function{alert('a');}
var b=function{alert('b');}
(a,b)()代码二:
var a=new function{alert('a');}
var b=new function{alert('b');}
(a,b)()
alert('a');
}
var b=function(){alert('b');}
(a,b)()2.var a=new function(){alert('a');}
var b=new function(){alert('b');}
(a,b)()
var b=function(){alert('b');}
(a,b)();
a,b是两个函数组成的逗号表达式,逗号表达式的值为最后一个表达式的值,如alert((1,2,3,4))值为4
(a,b)便是b函数,(a,b)()表示执行该函数.第二个解释不了.初看是因为
var a=new function(){alert('a');}
var b=new function(){alert('b');}
(a,b)()
a,b并没有定义成函数,他只是个普通object.由alert(typeof(a))可知.具体原因还没分析出来.因为a,b都不是函数,所以(a,b)()也不会执行alert,奇怪的是定义的时候alert了.但这种表达也合法,是在做什么操作也不清楚了。听下面知道的解释一下.
我的汇总如下:
var a=new function(){alert('a');}
是定义一个实例,也就是Object类型,(a,b)()这种写法应该是错的,但不知道为什么还正常运行。
不加(),(a,b)也会正常运行,(a,b)顺序执行所以弹出了a,bvar a=function(){alert('a');}是定义一个function,当(a,b)()时前面的a没有实例化,所以没有弹出a,
顺序只想到b的时候相当于一个匿名函数,所以执行了。下面大虾拍砖
var a=function(){alert('a');}
var b=function(){alert('b');}
(a,b)()2.JScript code
var a=new Function(alert('a'));
var b=new Function(alert('b'));
(a,b)()new Function();记得应该大写吧!
请楼主参考这篇文章http://www.planabc.net/2008/02/20/javascript_new_function/
本人感觉这些东西太过钻牛角尖了,本来就是很不好理解的东西,实用性又不强,偶尔研究一下倒是可以,不可太深究...
呵呵 最近觉得ExtJs里面的Core写的太牛了,研究中
参数expression1任何表达式。expression2任何表达式。
说明, 运算符使它两边的表达式以从左到右的顺序被执行,并获得右边表达式的值。, 运算符最普通的用途是在 for 循环的递增表达式中使用。例如:for (i = 0; i < 10; i++, j++){ k = i + j;}每次通过循环的末端时, for 语句只允许单个表达式被执行。, 运算符被用来允许多个表达式被当作单个表达式,从而规避该限制。