日期:2014-05-16  浏览次数:20426 次

实在不解...为什么暴露出来了。
小弟刚开始学习,不懂这段代码为何这样,求教解释!谢谢大家!
JScript code

    <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>



------解决方案--------------------
你这样定义Dealer是全局变量
JScript code
var Dealer = 1;
(function(){
   var D = Dealer = 2;
})()
alert(Dealer);//2

------解决方案--------------------
var D = Dealer = {};
是赋值,但变量Dealer未声明,于是变成全局变量,所以函数外也能访问。

var D, Dealer;
D = Dealer = {};
就OK了
------解决方案--------------------
js没有作用域块,只有函数级别的作用域
------解决方案--------------------
JScript code
(function(){
    var d = Defer = {};
)()