码迷,mamicode.com
首页 > Web开发 > 详细

jQuery源码解读一

时间:2017-03-21 15:11:35      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:为什么   window   表示   存在   返回   var   属性   type   处理   

(function(window,undefined){...})(window);

这是一个典型的自执行的匿名函数。

为什么会有一个名为undefined的形参呢?

undefined不是常量,可以把它设置为其他值。

undefined表示一个未声明的变量,或已声明但没有赋值的变量,或一个并不存在的对象属性。

JavaScript中,undefined并不是作为JavaScript的保留关键字,我们可以执行var undefined = ‘123‘对undefined赋值。

所以如果先执行var undefined = ‘123‘;再去执行(function(window){...//code goes there})(window),会造成中间代码被污染。

但是jQuery的(function(window,undefined){...})(window)用法,很好的避免了这个问题。

执行匿名函数的时候,只传递一个参数window,而不传递undefined,那么函数体重的undefined局部变量的值,刚好就是undefined,处理方式甚是巧妙。

不过,我发现目前以下的四种方式返回结果都是undefined,是不是说明现在的JavaScript也已经很好的避免了undefined污染的问题呢?

    <script type="text/javascript">
        (function (window, undefined) {
            alert(undefined);
        })(window);
    </script>
    <script type="text/javascript">
        var undefined = myValue;
        (function (window) {
            alert(undefined);
        })(window);
    </script>

    <script type="text/javascript">
        var undefined = myValue;
        (function (window, undefined) {
            alert(undefined);
        })(window);
    </script>

    <script type="text/javascript">
        var undefined = myValue;
        window.undefined = myValue_2;
        (function (window) {
            alert(undefined);
        })(window);
    </script>

    <script type="text/javascript">
        var undefined = myValue;
        window.undefined = myValue_2;
        (function (window, undefined) {
            alert(undefined);
        })(window);
    </script>

 

jQuery源码解读一

标签:为什么   window   表示   存在   返回   var   属性   type   处理   

原文地址:http://www.cnblogs.com/zouyanzhi/p/6593592.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!