jquery封装插件时匿名函数形参和实参的写法解释


Posted in Javascript onFebruary 14, 2017

 在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

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
fromCharCode和charCodeAt 方法
Dec 27 Javascript
新浪中用来显示flash的函数
Apr 02 Javascript
jquery验证表单中的单选与多选实例
Aug 18 Javascript
JS 实现BASE64_ENCODE和BASE64_DECODE(实例代码)
Nov 13 Javascript
JavaScript检测鼠标移动方向的方法
May 22 Javascript
jQuery实现的导航下拉菜单效果示例
Sep 05 Javascript
Node.js下自定义错误类型详解
Oct 17 Javascript
JS作用域链详解
Jun 26 Javascript
小程序云开发如何实现图片上传及发表文字
May 17 Javascript
利用原生JS实现data方法示例代码
May 28 Javascript
express框架中使用jwt实现验证的方法
Aug 25 Javascript
jquery实现简易验证插件封装
Sep 13 jQuery
js实现数组去重方法及效率?Ρ? target=
Feb 14 #Javascript
jQuery实现Table表格隔行变色及高亮显示当前选择行效果示例
Feb 14 #Javascript
微信小程序小组件 基于Canvas实现直播点赞气泡效果
May 29 #Javascript
Bootstrap中data-target 到底是什么
Feb 14 #Javascript
详解JS: reduce方法实现 webpack多文件入口
Feb 14 #Javascript
如何快速上手Vuex
Feb 14 #Javascript
BootStrap框架中的data-[ ]自定义属性理解(推荐)
Feb 14 #Javascript
You might like
迅速确定php多维数组的深度的方法
2014/01/07 PHP
php读取mysql的简单实例
2014/01/15 PHP
php常用文件操作函数汇总
2014/11/22 PHP
PHP使用内置函数生成图片的方法详解
2016/05/09 PHP
php变量与JS变量实现不通过跳转直接交互的方法
2017/08/25 PHP
Prototype Number对象 学习
2009/07/19 Javascript
JQuery获取文本框中字符长度的代码
2011/09/29 Javascript
IE中jquery.form中ajax提交没反应解决方法分享
2012/09/11 Javascript
javascript 按键事件(兼容各浏览器)
2013/12/20 Javascript
jquery 扑捉回车键事件代码
2014/04/24 Javascript
JavaScript中的apply和call函数详解
2014/07/20 Javascript
angular简介和其特点介绍
2015/01/29 Javascript
JavaScript中的ParseInt("08")和“09”返回0的原因分析及解决办法
2016/05/19 Javascript
AngularJS实现根据变量改变动态加载模板的方法
2016/11/04 Javascript
JavaScript事件方法(实例讲解)
2017/06/27 Javascript
Angular实现表单验证功能
2017/11/13 Javascript
在vue中封装可复用的组件方法
2018/03/01 Javascript
koa源码中promise的解读
2018/11/13 Javascript
ECharts地图绘制和钻取简易接口详解
2019/07/12 Javascript
layer.open回调获取弹出层参数的实现方法
2019/09/10 Javascript
基于axios 的responseType类型的设置方法
2019/10/29 Javascript
[45:44]完美世界DOTA2联赛PWL S2 FTD vs PXG 第一场 11.27
2020/12/01 DOTA
centos 下面安装python2.7 +pip +mysqld
2014/11/18 Python
举例讲解Python中字典的合并值相加与异或对比
2016/06/04 Python
Python使用matplotlib和pandas实现的画图操作【经典示例】
2018/06/13 Python
基于Pycharm加载多个项目过程图解
2020/01/19 Python
python中列表的含义及用法
2020/05/26 Python
Pymysql实现往表中插入数据过程解析
2020/06/02 Python
Python使用socketServer包搭建简易服务器过程详解
2020/06/12 Python
Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作
2021/03/03 Python
澳大利亚领先的运动鞋商店:Hype DC
2018/03/31 全球购物
党校个人自我鉴定范文
2014/03/28 职场文书
纪念九一八事变演讲稿:勿忘国耻
2014/09/14 职场文书
党员对照检查材料思想汇报(党的群众路线)
2014/09/24 职场文书
终止劳动合同通知书
2015/04/16 职场文书
教你解决往mysql数据库中存入汉字报错的方法
2021/05/06 MySQL