(function(){
function aaa(){
alert(1)
}
setTimeout('aaa()',1000)
})()
谁能解释下为啥aaa()方法这样写无法找到?

解决方案 »

  1.   

    这个是作用域的问题,
    这样写就可以了
                    (function(){
        function aaa(){
    alert(1)
        }
        setTimeout(aaa,1000)
    })()
      

  2.   

    (function(){
      function aaa(){ alert(1);}
      setTimeout(aaa, 1000);
    })();这样不就可以了么……
      

  3.   

    function aaa(){
      alert(2);
    }
    (function(){
      function aaa(){
        alert(1);
      };
      setTimeout("aaa()", 1000);
    })();作用域的问题么……这咋解释……
      

  4.   


    <script>
    /*
    1、setTimeout的第一个参数要求的是回调函数的返回值,而不是函数体本身
    2、注意作用域;
    3、带参时更要注意
    */
    (function(){
      this.aaa=function(){  alert(1) }//LZ的例子改变成这样最直观:this.aaa-->回调函数的返回值
      setTimeout(this.aaa,1000)
    })()
    //--------------------------------
    function f1(){
      alert('f1')
    }
    setTimeout(window.f1,1000);//window.f1---->回调函数的返回值
    //-------------------------------
    function f2(){
      alert('f2')
    }
    setTimeout('f2()',1000);//'f2()'---->更明显,回调函数的返回值(一个字串)//---------------------------
    function f3(){
      alert('纯字串参数我就歇菜了~~~~~f3')
    }
    setTimeout('f3',1000);//纯字串无意义//---------------------------
    function f4(){
      alert('我是全局变量。你身处某函数深层内部,但还是可以找我,我不歇菜:))) ~~~f4')
    }
    (function(){
      this.aaa=function(){  alert(1) }//LZ的例子改变成这样最直观:this.aaa-->回调函数的返回值
      setTimeout(f4,1000)
    })()</script>