比如这个函数
function(){
    var attachLinkEvent = function(link){
      link.onclick = function(){
        alert(link.getAttribute("href"));
        return false;
      }
    }
    var links = document.getElementById("three").getElementsByTagName("a");
    for (var i = 0; i < links.length; i++){
      var link = links[i];
      attachLinkEvent(link);
    }
  }
他的匿名函数可以这样写
function(){
    var links = document.getElementById("four").getElementsByTagName("a");
    for (var i = 0; i < links.length; i++){
      (function(){
         var link = links[i];
         link.onclick = function(){
          alert(link.getAttribute("href"));
          return false;
         }
      })();
    }
  }

解决方案 »

  1.   

    为什么会有这样的形式呢?(function(){...})();最后一个括号是干什么的?
      

  2.   

    返回值吧。
    (function(){...})();
    (function(){...})返回该函数;
    ()执行;
      

  3.   

    返回值吧。
    (function(){...})();
    (function(){...})返回该函数;
    ()执行;那么
    (function(){...});
    (去掉最后面的括号)会有什么效果呢?
      

  4.   

    TRY:
    <script>
    (function(){alert('hello');});(function(){alert('world');})();
    </script>
      

  5.   

    结果只弹出来 world,看来括号的意思有点像是 C 语言里的强制类型转换。<script>
    (function(){alert('hello');});(function(){alert('world');})(alert('king'));
    </script>这样写的话是先弹出 king,然后再弹出 world。但是
    // 第二个 alert 后加了一个分号
    (function(){alert('world');})(alert('king'););
    这样就什么也没有了,为什么呢?
      

  6.   

    javascript里函数可以是参数,参数也可以是函数。甚至有写特殊符也可以被定义为函数,他没有严格的规范,所以它是弱类型的语言。不,不能称它为语言,只能是脚本。比如:"$"就可以被定义为一个函数,prototype.js里有定义。
      

  7.   

    希望 tantiancai() 的
    // 第二个 alert 后加了一个分号
    (function(){alert('world');})(alert('king'););
    这样就什么也没有了,为什么呢这个问题也能得到回复 我也不懂