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 相关文章推荐
在chrome浏览器中,防止input[text]和textarea在聚焦时出现黄色边框的解决方法
May 24 Javascript
js捕获鼠标右键菜单中的粘帖事件实现代码
Apr 01 Javascript
jquery 单引号和双引号的区别及使用注意
Jul 31 Javascript
使用JS或jQuery模拟鼠标点击a标签事件代码
Mar 10 Javascript
JavaScript包装对象使用详解
Jul 09 Javascript
easyui Draggable组件实现拖动效果
Aug 19 Javascript
JavaScript中的call和apply的用途以及区别
Jan 11 Javascript
jQuery使用ajax_动力节点Java学院整理
Jul 05 jQuery
想用好React的你必须要知道的一些事情
Jul 24 Javascript
使用vue2实现购物车和地址选配功能
Mar 29 Javascript
使用proxy实现一个更优雅的vue【推荐】
Jun 19 Javascript
详解滑动穿透(锁body)终极探索
Apr 16 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实现的树形结构数据存取类实例
2014/11/29 PHP
详解PHP中的外观模式facade pattern
2018/02/05 PHP
thinkPHP框架实现的无限回复评论功能示例
2018/06/09 PHP
Yii 实现数据加密和解密
2021/03/09 PHP
JQUERY THICKBOX弹出层插件
2008/08/30 Javascript
javascript中的数字与字符串相加实例分析
2011/08/14 Javascript
js 判断checkbox是否选中的操作方法
2012/11/09 Javascript
javascript 禁用IE工具栏,导航栏等等实现代码
2013/04/01 Javascript
javascript 寻找错误方法整理
2014/06/15 Javascript
Linux下使用jq友好的打印JSON技巧分享
2014/11/18 Javascript
最全面的百度地图JavaScript离线版开发
2016/09/10 Javascript
JavaScript实现简单的树形菜单效果
2017/06/23 Javascript
JavaScript 完成注册页面表单校验的实例
2017/08/19 Javascript
vue实现微信获取用户信息的方法
2019/03/21 Javascript
对node通过fs模块判断文件是否是文件夹的实例讲解
2019/06/10 Javascript
angular6开发steps步骤条组件
2019/07/04 Javascript
微信小程序点击顶部导航栏切换样式代码实例
2019/11/12 Javascript
js实现倒计时秒杀效果
2020/03/25 Javascript
Python 正则表达式操作指南
2009/05/04 Python
利用Python的Twisted框架实现webshell密码扫描器的教程
2015/04/16 Python
基于python实现的抓取腾讯视频所有电影的爬虫
2016/04/22 Python
python 实现网上商城,转账,存取款等功能的信用卡系统
2016/07/15 Python
对python使用telnet实现弱密码登录的方法详解
2019/01/26 Python
python与mysql数据库交互的实现
2020/01/06 Python
印尼披萨外送专家:Domino’s Pizza印尼
2017/12/28 全球购物
请问软件开发中的设计模式你会使用哪些
2015/05/13 面试题
统计学专业毕业生的自我评价分享
2013/11/28 职场文书
致铅球运动员加油稿
2014/02/13 职场文书
感恩父母的演讲稿
2014/05/06 职场文书
图书馆标语
2014/06/19 职场文书
学校综治宣传月活动总结
2014/07/02 职场文书
幼儿园六一亲子活动方案
2014/08/26 职场文书
2016年百日安全生产活动总结
2016/04/06 职场文书
教你怎么用Python监控愉客行车程
2021/04/29 Python
Mysql 一主多从的部署
2022/05/20 MySQL
了解MySQL查询语句执行过程(5大组件)
2022/08/14 MySQL