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 相关文章推荐
JavaScript中SQL语句的应用实现
May 04 Javascript
理解JavaScript中worker事件api
Dec 25 Javascript
Bootstrap进度条组件知识详解
May 01 Javascript
手机端点击图片放大特效PhotoSwipe.js插件实现
Aug 24 Javascript
微信小程序中用WebStorm使用LESS
Mar 08 Javascript
vue服务端渲染的实例代码
Aug 28 Javascript
基于vue中解决v-for使用报红并出现警告的问题
Mar 03 Javascript
vue 中动态绑定class 和 style的方法代码详解
Jun 01 Javascript
JS阻止事件冒泡的方法详解
Aug 26 Javascript
vscode中eslint插件的配置(prettier配置无效)
Sep 10 Javascript
vue.config.js常用配置详解
Nov 14 Javascript
写一个Vue loading 插件
Nov 09 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/07/02 PHP
PHP 透明水印生成代码
2012/08/27 PHP
详解PHP中的Traits
2015/07/29 PHP
PHP使用GD库制作验证码的方法(点击验证码或看不清会刷新验证码)
2017/08/15 PHP
Thinkphp自定义生成缩略图尺寸的方法
2019/08/05 PHP
JavaScript中的Array对象使用说明
2011/01/17 Javascript
各种常用的JS函数整理
2013/10/25 Javascript
JS代码随机生成姓名、手机号、身份证号、银行卡号
2016/04/27 Javascript
JS实现pasteHTML兼容ie,firefox,chrome的方法
2016/06/22 Javascript
Angular 路由route实例代码
2016/07/12 Javascript
原生js实现放大镜
2017/02/20 Javascript
解决ztree搜索中多级菜单展示不全问题
2017/07/05 Javascript
使用watch监听路由变化和watch监听对象的实例
2018/02/24 Javascript
Vue 项目代理设置的优化
2018/04/17 Javascript
微信小程序自定义轮播图
2018/11/04 Javascript
JS+HTML5 canvas绘制验证码示例
2018/12/05 Javascript
[57:28]2018DOTA2亚洲邀请赛 4.6 淘汰赛 TNC vs Liquid 第一场
2018/04/10 DOTA
Python开发之快速搭建自动回复微信公众号功能
2016/04/22 Python
mysql 之通过配置文件链接数据库
2017/08/12 Python
基于Python的PIL库学习详解
2019/05/10 Python
python+numpy按行求一个二维数组的最大值方法
2019/07/09 Python
pygame实现成语填空游戏
2019/10/29 Python
Python如何在DataFrame增加数值
2020/02/14 Python
40行Python代码实现天气预报和每日鸡汤推送功能
2020/02/27 Python
Python自动化测试中yaml文件读取操作
2020/08/20 Python
利用CSS3的特性改变文本选中时的颜色
2013/09/11 HTML / CSS
html5+css3之动画在webapp中的应用
2014/11/21 HTML / CSS
宝拉珍选美国官网:Paula’s Choice美国
2018/01/07 全球购物
Zavvi荷兰:英国大型音像制品和图书游戏零售商
2018/03/22 全球购物
英国女装网上商店:I Saw It First
2018/10/18 全球购物
元旦晚会上单位领导演讲稿
2014/01/05 职场文书
租房协议书范例
2014/10/14 职场文书
2015年前台文员工作总结
2015/05/18 职场文书
工资证明范本
2015/06/12 职场文书
小学生暑假生活总结
2015/07/13 职场文书
微信小程序实现拍照和相册选取图片
2021/05/09 Javascript