晕居然有这等高手,用这种写法。。这么看吧:最后是();代表调用一个函数;
这个之前是(...),这个代表了要调用的函数。
是什么样的函数呢?
是一个没有名字的函数,它的定义是alert("aaa")。这样总体看来,就是调用一个定义为alert("aaa")的函数,自然就有输出了谁写的代码阿?这种高人亲近不得的。简简单单一件事,非要弄得这么神秘。。
:)

解决方案 »

  1.   

    deerchao(喜欢科幻的多给点分...)
    我开始也是跟你想的一样。
    但是,请看如下几个代码与结果:
    (function xyz() {alert("aaa");});xyz();   //结果:xyz not defined
    (function xyz() {alert("aaa");})();       //与原始的一样,直接输出aaa
    (function xyz() {alert("aaa");});();      //语法错误
    (function xyz() {alert("aaa");};xyz();)   //缺少右括号
     function xyz() {alert("aaa");};xyz();    //这个大家都能明白
    晕了晕了,高手呢?高手呢?
      

  2.   

    按照deerchao(喜欢科幻的多给点分...)的意思,
    如果function(){...}是一个无名函数,无法解释function() {alert("aaa");}(); 将出现语法错误
    如果(function(){...})是一个无名函数,似乎(function() {alert("aaddda");});();应该也对,但是也是语法错误
    总之我已经晕菜了
      

  3.   

    这是灵活的运用运算符的优先级来的。待我一一解释来听
        (function() {alert("aaddda");})();
       首先function() {alert("aaddda");}这一段构建一个function对象,在周围加一对()就表示引用该对象,再后面的.()表示运行。。
        运算符的灵活运用对新手来说,确实看起来挺麻烦的。
      

  4.   


    复杂?
    有这个复杂?((void *())0)();
    //C语言里的经典例子
      

  5.   

    ((void *())0)();
      这也叫复杂啊?
       还不跟上面的一个级别的啊
       一样的简单,还不是一级一级的去分析运算符优先级就行了的。。
       大家还是回去好好看看C里的运算符优先级吧,对大家都有好处的,省得看了这么简单的代码就说复杂
      

  6.   

    wwser(我要这天,再也遮不住我眼,我要这地,再也埋不了我心) 不与子语。
      

  7.   

    js中function有几种定义方法 1.  function name() { alert('aaa') }      
    2.  var name = new Function( "alert('aaa');");调用时都使用 name();就可以了简写可以是
    1.  (function name() { alert('aaa') })();
    2.  (new Function( "alert('aaa');"))();
      

  8.   

    不于吾语,吾还8跟YOU话呢。
      YOU以为你系边个?