zoukankan      html  css  js  c++  java
  • 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且执行时没有传这个参数。

    好了,这篇就到这里了。

  • 相关阅读:
    p4841 城市规划
    p2619 [国家集训队2]Tree I [wqs二分学习]
    p3723 [AH2017/HNOI2017]礼物
    p5437 【XR-2】约定
    p5349 幂
    数据结构:结构之美
    你所不知道的传输层
    为什么选择这种技术而不选择另一种技术?
    Internet路由-主机路由表和转发表
    计算机网络----数据链路层(三)
  • 原文地址:https://www.cnblogs.com/Yanger90/p/4135714.html
Copyright © 2011-2022 走看看