zoukankan      html  css  js  c++  java
  • 关于 jQuery中 function( window, undefined ) 写法的原因

     今天在读 jQuery 源码的时候,发现下面的写法:

    (function(window,undefined){
        ...// code goes here
    })(window);

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

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

    varundefined='myValue';


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

    (function(window){
        ...// code goes here
    })(window);

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

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

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

    而 jQuery 采用的这种写法,就很好的避免了这个问题。在执行匿名函数的时候,只传递一个参数 window, 而不传递 undefined,那么函数体中的 undefined 局部变量的值,刚好就是 undefined. 甚为巧妙啊。

  • 相关阅读:
    Git 进阶学习
    My SQL 学习打卡 60天搞定mysql
    设计模式 学习笔记
    docker 从入门到精通
    java 异步线程下的顺序控制
    Maven 工程 如何添加 oracle 驱动 问题
    Hive 2.1.1 学习笔记
    Linux 下 MySQL-5.6.16 安装
    hadoop2.x HDFS HA linux环境搭建
    [LC] 1146. Snapshot Array
  • 原文地址:https://www.cnblogs.com/macliu/p/3425741.html
Copyright © 2011-2022 走看看