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 相关文章推荐
iis6+javascript Add an Extension File
Jun 13 Javascript
网页前台通过js非法字符过滤代码(骂人的话等等)
May 26 Javascript
javascript 伪数组实现方法
Oct 11 Javascript
用jquery中插件dialog实现弹框效果实例代码
Nov 15 Javascript
浅谈angular.js中实现双向绑定的方法$watch $digest $apply
Oct 14 Javascript
JavaScript获取当前cpu使用率的方法
Dec 15 Javascript
jQuery+css实现的换页标签栏效果
Jan 27 Javascript
Js调用Java方法并互相传参的简单实例
Aug 11 Javascript
微信小程序 出现47001 data format error原因解决办法
Mar 10 Javascript
基于react框架使用的一些细节要点的思考
May 31 Javascript
Vue.js仿微信聊天窗口展示组件功能
Aug 11 Javascript
详解Puppeteer前端自动化测试实践
Feb 21 Javascript
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中基本符号及使用方法
2010/03/23 PHP
深入理解PHP内核(一)
2015/11/10 PHP
php生成图片缩略图功能示例
2017/02/22 PHP
php curl简单采集图片生成base64编码(并附curl函数参数说明)
2019/02/15 PHP
Javascript 的addEventListener()及attachEvent()区别分析
2009/05/21 Javascript
jquery的ajaxSubmit()异步上传图片并保存表单数据演示代码
2013/06/04 Javascript
JS实现日期加减的方法
2013/11/29 Javascript
javascript实现验证身份证号的有效性并提示
2015/04/30 Javascript
JavaScript采用递归算法计算阶乘实例
2015/08/04 Javascript
详解Jquery Easyui的验证扩展
2017/01/09 Javascript
Bootstrap禁用响应式布局的实现方法
2017/03/09 Javascript
vue2 前后端分离项目ajax跨域session问题解决方法
2017/04/27 Javascript
ztree实现权限横向显示功能
2017/05/20 Javascript
在微信小程序中使用vant的方法
2019/06/07 Javascript
layer 刷新某个页面的实现方法
2019/09/05 Javascript
layui默认选中table的CheckBox复选框方法
2019/09/19 Javascript
关于在LayUI中使用AJAX提交巨坑记录
2019/10/25 Javascript
微信小程序实现电子签名并导出图片
2020/05/27 Javascript
Vue组件生命周期运行原理解析
2020/11/25 Vue.js
Python 调用DLL操作抄表机
2009/01/12 Python
Python实现列表删除重复元素的三种常用方法分析
2017/11/24 Python
python使用pygame框架实现推箱子游戏
2018/11/20 Python
对Python的交互模式和直接运行.py文件的区别详解
2019/06/29 Python
python PyAutoGUI 模拟鼠标键盘操作和截屏功能
2019/08/04 Python
pytorch中的卷积和池化计算方式详解
2020/01/03 Python
python+opencv3生成一个自定义纯色图教程
2020/02/19 Python
python游戏开发的五个案例分享
2020/03/09 Python
Python 捕获代码中所有异常的方法
2020/08/03 Python
Selenium webdriver添加cookie实现过程详解
2020/08/12 Python
如何快速一次性卸载所有python包(第三方库)呢
2020/10/20 Python
通过Django Admin+HttpRunner1.5.6实现简易接口测试平台
2020/11/11 Python
html标签之Object和EMBED标签详解
2013/07/04 HTML / CSS
海量信息软件测试笔试题
2015/08/08 面试题
劳动仲裁撤诉申请书
2015/05/18 职场文书
发票退票证明
2015/06/24 职场文书
Python 居然可以在 Excel 中画画你知道吗
2022/02/15 Python