小弟刚开始学习,不懂这段代码为何这样,求教解释!谢谢大家!    <script type="text/javascript">
        (function () {
            var D = Dealer = {};            D.fn = {
                test: function () {
                    alert('1');
                }
            };
        })();        //为什么 Dealer可以访问
        Dealer.fn.test();        //D却不行
        //D.fn.test();        //   D = Dealer = {}; 这个不是赋值的意思?Dealer这个对象为什么会暴露了?
    </script>

解决方案 »

  1.   

    你这样定义Dealer是全局变量
    var Dealer = 1;
    (function(){
       var D = Dealer = 2;
    })()
    alert(Dealer);//2
      

  2.   

    var D = Dealer = {};
    是赋值,但变量Dealer未声明,于是变成全局变量,所以函数外也能访问。var D, Dealer;
    D = Dealer = {};
    就OK了
      

  3.   

    而D是局部变量,算是javascript代码解析的一个特点。
      

  4.   

    JS有局部变量?for(var i=0;i<5;i++)
                {
                 var a=i;
                }
                alert(a); //显示4那这个a为什么会有值?
      

  5.   

    (function(){
        var d = Defer = {};
    )()(function(){
        Defer = {};    //变量没有用var定义是全局变量,一般不推荐使用
        var d = Defer; //局部变量
    )()上面这两段代码是等价的,知道原因了吗?
      

  6.   

    我刚接触JS,我还以为JS没有局部变量呢
    学到东西了,多谢
      

  7.   

    不仅a,i 可以访问,下面照样访问,因为JS没有块级作用域
    if(true) {
        var a = 1;
    }
    alert(a);