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 相关文章推荐
js中定义一个变量并判断其是否为空的方法
May 13 Javascript
JavaScript中Number.NEGATIVE_INFINITY值的使用详解
Jun 05 Javascript
JavaScript和HTML DOM的区别与联系及Javascript和DOM的关系
Nov 15 Javascript
整理Javascript基础语法学习笔记
Nov 29 Javascript
jQuery中借助deferred来请求及判断AJAX加载的实例讲解
May 24 Javascript
详解JavaScript的内置对象
Dec 07 Javascript
js+html制作简单验证码
Feb 16 Javascript
网页中右键功能的实现方法之contextMenu的使用
Feb 20 Javascript
node文件批量重命名的方法示例
Oct 23 Javascript
解决koa2 ctx.render is not a function报错问题
Aug 07 Javascript
微信小程序引入Vant组件库过程解析
Aug 06 Javascript
细述Javascript的加法运算符的具体使用
Oct 18 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
使用迭代器 遍历文件信息的详解
2013/06/08 PHP
yii,CI,yaf框架+smarty模板使用方法
2015/12/29 PHP
PHP+Apache+Mysql环境搭建教程
2016/08/01 PHP
PHP数组array类常见操作示例
2020/05/15 PHP
如何在PHP环境中使用ProtoBuf数据格式
2020/06/19 PHP
JScript内置对象Array中元素的删除方法
2007/03/08 Javascript
jQuery Flash/MP3/Video多媒体插件
2010/01/18 Javascript
JS中eval函数的使用示例
2013/07/21 Javascript
JS获取DropDownList的value值与text值的示例代码
2014/01/07 Javascript
JavaScript静态类型检查工具FLOW简介
2015/01/06 Javascript
jQuery横向擦除焦点图特效代码分享
2015/09/06 Javascript
JavaScript setTimeout使用闭包功能实现定时打印数值
2015/12/18 Javascript
Angularjs 滚动加载更多数据
2016/03/17 Javascript
jquery分页插件jquery.pagination.js实现无刷新分页
2016/04/01 Javascript
JavaScript判断微信浏览器实例代码
2016/06/13 Javascript
Javascript中prototype的使用详解
2016/06/18 Javascript
Vue.js每天必学之过渡与动画
2016/09/06 Javascript
vue制作加载更多功能的正确打开方式
2016/10/12 Javascript
Canvas 绘制粒子动画背景
2017/02/15 Javascript
微信小程序实现的图片保存功能示例
2019/04/24 Javascript
独立部署小程序基于nodejs的服务器过程详解
2019/06/24 NodeJs
Python判断操作系统类型代码分享
2014/11/22 Python
详解python中的装饰器
2018/07/10 Python
Python3.5 Pandas模块之Series用法实例分析
2019/04/23 Python
python从入门到精通 windows安装python图文教程
2019/05/18 Python
pyqt5使用按钮进行界面的跳转方法
2019/06/19 Python
如何更优雅地写python代码
2019/07/02 Python
python实现Oracle查询分组的方法示例
2020/04/30 Python
CSS3文本换行word-wrap解决英文文本超过固定宽度不换行
2013/10/10 HTML / CSS
微软中国官方商城:Microsoft Store中国
2018/10/12 全球购物
Parfumdreams英国:香水和化妆品
2019/05/10 全球购物
澳大利亚最好的电动自行车:Leon Cycle
2020/12/19 全球购物
英语教师岗位职责
2014/03/16 职场文书
求职意向书
2014/04/01 职场文书
辩论赛新闻稿
2015/07/17 职场文书
Java 死锁解决方案
2022/05/11 Java/Android