(function(){}),碰到这段代码,看不怎么懂,求高手解释,最好举几个例子,和它的实用

解决方案 »

  1.   

    你还少了个()吧
    (function(){})()是自执行函数
      

  2.   

    function adf(){}
    嗯,自执行函数!类似于调用adf();
      

  3.   

    1. 什么是自执行的匿名函数?
       它是指形如这样的函数: (function {// code})();  2. 疑问
      为什么(function {// code})();可以被执行, 而function {// code}();却会报错?  3. 分析
      (1). 首先, 要清楚两者的区别:
            (function {// code})是表达式, function {// code}是函数声明.
      (2). 其次, js"预编译"的特点:
            js在"预编译"阶段, 会解释函数声明, 但却会忽略表式.
      (3). 当js执行到function() {//code}();时, 由于function() {//code}在"预编译"阶段已经被解释过, js会跳过function(){//code}, 试图去执行();, 故会报错;
            当js执行到(function {// code})();时, 由于(function {// code})是表达式, js会去对它求解得到返回值, 由于返回值是一  个函数, 故而遇到();时, 便会被执行.
      

  4.   

    楼上正解:
    你少了一个();
    应该是(function xx(){....})();
    你可以把function xx(){....}看成是
    定义一个函数返回了函数名xx
    就成了xx();
    所以相当于定义一个xx函数并且调用它
      

  5.   

    楼主看看这个帖子就明白了
    http://topic.csdn.net/u/20090217/13/653f7949-9e0c-4e99-adb3-dcbc99fca8d5.html?90676
      

  6.   

    // 如果执行一个方法是a(), 那么(function(){})()也可以认为是方法后加了一括号
    // function(){}()会报错, 因为他先解释了括号, 才解释了方法window.a = function(a1, a2){
    //在这里会根据所执行的方法创建两个函数var a1, var a2
    var a3 = "a3"//这里也手动创建一个A3
        window.b = function(b1, b2){
    //在方法内创建的方法是可以访问上一个方法的var函数的, 上一个function的执行就不会发生任何释放的动作
            alert(a1 + "-" + a2 + "-" + a3 + "-" + b1 + "-" + b2 )
        }
    }(1, 2)//执行这个方法window.b(5, 6)
      

  7.   

    这叫匿名函数,其实匿名是常态1234 这些叫匿名数字
    /\d+/g 匿名正则
    "1234" 匿名字符串
    [1, 2] 匿名数组
    {} 匿名对象
    var a = "123" + "456"; // 两个匿名字符串合并
    把函数和这些数据类型放平,你就理解了。