• Jquery源码中的Javascript基础知识(二)


    接上一篇,jquery源码的这种写法叫做匿名函数自执行

    (function( window, undefined ) {
        // code
    })( window );

     函数定义了两个参数window和undefined,执行函数传入了window对象。

     

    参数window

    因为变量对象的作用域链的关系,我们知道即使不传入window对象,函数内部也是可以访问到它的,那么,这里传入window对象的意义主要有两点:

    1.提高性能

    按照变量对象的作用域链顺序,函数会先在内部查找window变量,而函数内部最开始包含的变量就是arguments对象,也就是参数变量,同时函数内部的代码量又是比较庞大的,如果都没找到,就会继续查找包含(外部)环境,这里即全局环境中的window对象。

    这里直接传入window对象,减少了查询时间,提高了效率。

    2.方便压缩

    (function( e, undefined ) {
        // code
    })( window );

    查看压缩版本的JQ源码,看到匿名函数中的window都被替换成了e,这样减少了字符数,进一步缩小了文件体积。

    而如果没有使用这个参数的话,window就不能换成其他的标识符,那样访问的就不是外部环境中的window对象了。

     

    参数undefined

     全局环境window对象中有一个属性undefined,它的值是"undefined",并且无法更改。

    但是在有些浏览器中却不是这样,比如ie7、ie8,用户能够修改它值。

    所以,为了防止undefined的值被意外修改,就又定义了一个参数undefined且执行时没有传这个参数。

    好了,这篇就到这里了。

  • 相关阅读:
    Openflow1.3
    10行Python代码实现人脸定位
    Ubuntu安装Docker
    docker 命令部分
    tf.truncated_normal和tf.random_normal使用方法的区别
    Tensorboard服务激活
    Tensorflow基础
    TFRecords转化和读取
    卷积层+池化层的理解
    TensorFlow实现LeNet5模型
  • 原文地址:https://www.cnblogs.com/Yanger90/p/4135714.html
Copyright © 2020-2023  润新知