代码一:
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)()

解决方案 »

  1.   

    结果报错两种结构都报错var a=function{alert('a');}这种写法是申明一个匿名函数
      

  2.   

    http://fengsky491.javaeye.com/blog/228420
      

  3.   

    var a=function(){
        alert('a');
    }
      

  4.   

    不好意思 function后面忘了加()了
      

  5.   

    1.var a=function(){alert('a');}
    var b=function(){alert('b');}
    (a,b)()2.var a=new function(){alert('a');}
    var b=new function(){alert('b');}
    (a,b)()
      

  6.   

    var a=function(){alert('a');}
    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了.但这种表达也合法,是在做什么操作也不清楚了。听下面知道的解释一下.
      

  7.   

    通过上面大虾们给的解释
    我的汇总如下:
    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的时候相当于一个匿名函数,所以执行了。下面大虾拍砖
      

  8.   

    改成1.JScript code
    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/
    本人感觉这些东西太过钻牛角尖了,本来就是很不好理解的东西,实用性又不强,偶尔研究一下倒是可以,不可太深究...
      

  9.   


    呵呵 最近觉得ExtJs里面的Core写的太牛了,研究中
      

  10.   

    逗号运算符 (,)顺序执行两个表达式。expression1, expression2
    参数expression1任何表达式。expression2任何表达式。
    说明, 运算符使它两边的表达式以从左到右的顺序被执行,并获得右边表达式的值。, 运算符最普通的用途是在 for 循环的递增表达式中使用。例如:for (i = 0; i < 10; i++, j++){   k = i + j;}每次通过循环的末端时, for 语句只允许单个表达式被执行。, 运算符被用来允许多个表达式被当作单个表达式,从而规避该限制。