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 处理事件绑定的一些兼容写法
Dec 24 Javascript
HTML页面滚动时获取离页面顶部的距离2种实现方法
Sep 05 Javascript
jquery控制select的text/value值为选中状态
Jun 03 Javascript
基于jQuery实现的文字按钮表单特效整理
Dec 07 Javascript
jQuery实现灰蓝风格标准二级下拉菜单效果代码
Aug 31 Javascript
基于javascript实现简单的抽奖系统
Apr 15 Javascript
jQuery树形控件zTree使用小结
Aug 02 Javascript
jQuery实现对象转为url参数的方法
Jan 11 Javascript
JavaScript 函数节流详解及方法总结
Feb 09 Javascript
浅谈vuepress 踩坑记
Apr 18 Javascript
微信小程序tabbar底部导航
Nov 05 Javascript
详解Vue3中对VDOM的改进
Apr 23 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关于IE下的iframe跨域导致session丢失问题解决方法
2013/10/10 PHP
php递归函数三种实现方法及如何实现数字累加
2015/08/07 PHP
PHP单态模式简单用法示例
2016/11/16 PHP
PHP排序算法之冒泡排序(Bubble Sort)实现方法详解
2018/04/20 PHP
Mac下快速搭建PHP开发环境步骤详解
2019/05/05 PHP
javascript 打开页面window.location和window.open的区别
2010/03/17 Javascript
jquery ui resizable bug解决方法
2010/10/26 Javascript
html页面显示年月日时分秒和星期几的两种方式
2013/08/20 Javascript
JavaScript实现关键字高亮功能
2014/11/12 Javascript
Jquery中offset()和position()的区别分析
2015/02/05 Javascript
Vue.js基础知识汇总
2016/04/27 Javascript
vue.js实现请求数据的方法示例
2017/02/07 Javascript
js控制文本框禁止输入特殊字符详解
2017/04/07 Javascript
vue实现登录后页面跳转到之前页面
2018/01/07 Javascript
vue使用echarts图表的详细方法
2018/10/22 Javascript
JS添加或删除HTML dom元素的方法实例分析
2019/03/05 Javascript
layui.tree组件的使用以及搜索节点功能的实现
2019/09/26 Javascript
vue element 中的table动态渲染实现(动态表头)
2019/11/21 Javascript
express异步函数异常捕获示例详解
2020/11/30 Javascript
[01:18]DOTA2超级联赛专访hanci ForLove淘汰感言曝光
2013/06/04 DOTA
paramiko模块安装和使用(远程登录服务器)
2014/01/27 Python
python实现RSA加密(解密)算法
2016/02/17 Python
Python装饰器基础详解
2016/03/09 Python
python 中的divmod数字处理函数浅析
2017/10/17 Python
Python实现的简单读写csv文件操作示例
2018/07/12 Python
使用Keras实现Tensor的相乘和相加代码
2020/06/18 Python
Restful_framework视图组件代码实例解析
2020/11/17 Python
HTML5 Video/Audio播放本地文件示例介绍
2013/11/18 HTML / CSS
预订全球最佳旅行体验:Viator
2018/03/30 全球购物
小学运动会广播稿200字(十二篇)
2014/01/14 职场文书
活动总结书
2014/05/08 职场文书
党代会心得体会
2014/09/04 职场文书
保密法制宣传月活动总结
2015/05/07 职场文书
婚宴来宾致辞
2015/07/28 职场文书
导游词之西递宏村
2019/12/10 职场文书
MySQL学习必备条件查询数据
2022/03/25 MySQL