• 详解jquery插件中(function ( $, window, document, undefined )的作用。


    1.(function(window,undefined){})(window);

    Q:(function(window,undefined){})(window);中为什么要将window和undefined作为参数传给它?

    A:因为 javascript 执行JS代码是从里到外,因此把全局变量传进来,就避免了到外层去寻找。提高效率

    Q:不明白为什么JS 的undefined还可以做变量名。 undefined算是JS里面的什么呢?不是关键字,不是保留字,true跟false还有null也不是,不过跟undefined不同,不能用作变量名。

    这些到底算是什么呢?

    A:可以避免 undefined 被别人定义了。

    var undefined=8;
    
    (function(window){
    
    alert(window.undefined); //8
    
    alert(undefined); //8
    
    })(window);

    var undefined=8;
    
    (function(window,undefined){
    
    alert(window.undefined); //8
    
    alert(undefined); //此处undefined参数为局部的名称为undefined变量,值为undefined
    
    })(window);

    所以后者,就算外面的人把 ,undefined 定义了,里面的 undefined 依然不受影响。

    大概是为了最大程度防止外界的变量定义对 所做封装的内部影响吧。

    2.(function (window, document, undefined) {})(window, document); 

    详解jquery插件中(function ( $, window, document, undefined )的作用:

    在jquery插件中我们经常看到以下这段代码

    ;(function ( $, window, document, undefined ){
    
    //函数体内具体代码
    
    })(jQuery, window,document);

    对于很多初学者来说很难明白这表示什么,下边我将为大家介绍其相应的作用。

    1、代码最前面的分号,可以防止多个文件压缩合并以为其他文件最后一行语句没加分号,而引起合并后的语法错误。

    2、匿名函数(function(){})();:由于Javascript执行表达式是从圆括号里面到外面,所以可以用圆括号强制执行声明的函数。避免函数体内和外部的变量冲突。

    3、$实参:$是jquery的简写,很多方法和类库也使用$,这里$接受jQuery对象,也是为了避免$变量冲突,保证插件可以正常运行。

    4、window, document实参分别接受window, document对象,window, document对象都是全局环境下的,而在函数体内的window, document其实是局部变量,不是全局的window, document对象。这样做有个好处就是可以提高性能,减少作用域链的查询时间,如果你在函数体内需要多次调用window 或 document对象,这样把window 或 document对象当作参数传进去,这样做是非常有必要的。当然如果你的插件用不到这两个对象,那么就不用传递这两个参数了。

    5、最后剩下一个undefined形参了,那么这个形参是干什么用的呢,看起来是有点多余。undefined在老一辈的浏览器是不被支持的,直接使用会报错,js框架要考虑到兼容性,因此增加一个形参undefined。

      

      

  • 相关阅读:
    opencv出现问题:/usr/lib/x86_64-linux-gnu/libpng16.so.16: undefined reference to `inflateValidate@ZLIB_1.2.9'
    SCI-HUB 解锁论文的正确姿势——如何免费下载论文
    VS2019 实现与 Linux服务器同步
    VS Code 写代码实时同步服务器【Sftp插件】
    Docker实用技巧(二):容器与主机之间复制文件
    Docker实用技巧(一):镜像的备份/保存/加载/删除
    mycat注解及高可用(三)
    mycat分片及主从(二)
    SVN中trunk,branches,tags用法详解
    寄存器的英文全称
  • 原文地址:https://www.cnblogs.com/uu5666/p/6636263.html
Copyright © 2020-2023  润新知