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实现url地址自动检测并添加URL链接示例代码
Nov 12 Javascript
jquery实现像栅栏一样左右滑出式二级菜单效果代码
Aug 24 Javascript
js精美的幻灯片画集特效代码分享
Aug 29 Javascript
jquery动画效果学习笔记(8种效果)
Nov 13 Javascript
javascript闭包(Closure)用法实例简析
Nov 30 Javascript
JavaScript实现阿拉伯数字和中文数字互相转换
Jun 12 Javascript
Angular2学习笔记——详解NgModule模块
Dec 02 Javascript
JQuery 又谈ajax局部刷新
Nov 27 jQuery
详解vue后台系统登录态管理
Apr 02 Javascript
webpack proxy 使用(代理的使用)
Jan 10 Javascript
微信小程序后端无法保持session的原因及解决办法问题
Mar 20 Javascript
浅谈JavaScript中等号、双等号、 三等号的区别
Aug 06 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
Packer 3.0 JS压缩及混淆工具 下载
2007/05/03 Javascript
FusionCharts图表显示双Y轴双(多)曲线
2012/11/22 Javascript
浅析javascript 定时器
2014/12/23 Javascript
使用jquery组件qrcode生成二维码及应用指南
2015/02/22 Javascript
JS基于FileSystemObject创建一个指定路径的TXT文本文件
2015/08/05 Javascript
JavaScript中Object.prototype.toString方法的原理
2016/02/24 Javascript
vue,angular,avalon这三种MVVM框架优缺点
2016/04/27 Javascript
Vue.js对象转换实例
2017/06/07 Javascript
简单实现js放大镜效果
2017/07/24 Javascript
vue使用axios跨域请求数据问题详解
2017/10/18 Javascript
Vue导出json数据到Excel电子表格的示例
2017/12/04 Javascript
javascript 通过键名获取键盘的keyCode方法
2017/12/31 Javascript
浅谈SpringMVC中post checkbox 多选框value的值(隐藏域方式)
2018/01/08 Javascript
微信小程序仿RadioGroup改变样式的处理方案
2018/07/13 Javascript
Vue-router 切换组件页面时进入进出动画方法
2018/09/01 Javascript
微信小程序textarea层级过高的解决方法
2019/03/04 Javascript
React+Redux实现简单的待办事项列表ToDoList
2019/09/29 Javascript
[44:40]Serenity vs Pain 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
查看TensorFlow checkpoint文件中的变量名和对应值方法
2018/06/14 Python
python判断输入日期为第几天的实例
2018/11/13 Python
python操作日志的封装方法(两种方法)
2019/05/23 Python
pandas dataframe的合并实现(append, merge, concat)
2019/06/24 Python
python网络爬虫 Scrapy中selenium用法详解
2019/09/28 Python
python mysql 字段与关键字冲突的解决方式
2020/03/02 Python
Selenium向iframe富文本框输入内容过程图解
2020/04/10 Python
Soft Cotton捷克:来自爱琴海棉花的浴袍
2017/02/01 全球购物
夏尔巴人登珠峰品牌:Sherpa Adventure Gear
2018/02/08 全球购物
法国女性内衣购物网站:Glamuse
2019/05/13 全球购物
中学自我评价
2014/01/31 职场文书
协议书范本
2014/04/23 职场文书
离职保密承诺书
2014/05/28 职场文书
没有孩子的离婚协议书怎么写
2014/09/17 职场文书
2015年档案管理员工作总结
2015/05/13 职场文书
入团介绍人意见范文
2015/06/04 职场文书
Python 使用 Frame tkraise() 方法在 Tkinter 应用程序中的Frame之间切换
2022/04/24 Python
使用CSS实现百叶窗效果示例代码
2023/05/07 HTML / CSS