• jQuery 1.4.4 中 function( window, undefined ) 写法原因


    读 jQuery 1.4.4 版本代码的时候,发现下面的写法:

    (function( window, undefined )

    {    

    ... // code goes here

    })(window);

    window 肯定是没问题, 表示 BOM 浏览器对象模型中的 window 对象。但是这里为什么会有一个名为 undefined 的形参呢?起初的时候很不理解。去技术群请教了一下,才真正理解了这里的原因。

    原来,Javascript 中的 undefined 并不是作为关键字(全部Javascript关键字列表)出现的。因此可以允许用户对其赋值。例如:

    var undefined = 'myValue';

    如此一来,假如 jQuery 中使用下面的写法:

    (function( window ) {   

     ... // code goes here

    })(window);

    必然造成中间代码里的 undefined 遭到污染。因为在默认情况下,对于一个未定义的变量,它的值应该是 undefined,假如用户使用形如

    var undefined = 'myValue'; // 或者window.undefined = 'myValue';

    的代码进行赋值,那么,jQuery 中的 undefined 的值就变成了用户指定的值(这里是字符串 ‘myValue’)。这样会造成 jQuery 内部异常。

    而 jQuery 采用的这种写法,就很好的避免了这个问题。在执行匿名函数的时候,只传递一个参数 window, 而不传递 undefined,那么函数体中的 undefined 局部变量的值,刚好就是 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 ="myValue2";
    (function(window){
    alert(undefined);
    })(window);
    </script>

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

    Answer:undefined myvalue undefined myvalue2 undefined

    原文地址:http://www.fising.cn/?p=127

  • 相关阅读:
    【唯星宠物】——CSS/BootStrap/Jquery爬坑之响应式首页
    layui table数据渲染页面+筛选医生+在筛选日期一条龙2
    layui table数据渲染页面+筛选医生+在筛选日期一条龙
    拿到数组逗号分隔在循环拿到里面的数据,最后DOM插入页面
    解决跨域请求的几种方式
    MUI下拉刷新
    Java集合(6):理解Map
    Java集合(5):理解Collection
    Java集合(4):未获支持的操作及UnsupportedOperationException
    Java集合(3):使用Abstract类
  • 原文地址:https://www.cnblogs.com/jellychow/p/3142504.html
Copyright © 2020-2023  润新知