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且执行时没有传这个参数。

    好了,这篇就到这里了。

  • 相关阅读:
    文章块引用模版
    悬停工具提示
    各个知识点
    Github Fork 缎带.html
    css重置样式
    暗灰色的圆形按钮.html
    css中的居中的方法
    display:table的几个用法 块级子元素垂直居中
    <meta>标签中http-equiv属性的属性值X-UA-Compatible详解
    jQuery难学是因为什么?
  • 原文地址:https://www.cnblogs.com/Yanger90/p/4135714.html
Copyright © 2011-2022 走看看