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 相关文章推荐
prototype 源码中文说明之 prototype.js
Sep 22 Javascript
js hover 定时器(实例代码)
Nov 12 Javascript
Jquery插件编写简明教程
Mar 25 Javascript
js判断当页面无法回退时关闭网页否则就history.go(-1)
Aug 07 Javascript
js不能获取隐藏的div的宽度只能先显示后获取
Sep 04 Javascript
js实现透明度渐变效果的方法
Apr 10 Javascript
javascript获取系统当前时间的方法
Nov 19 Javascript
jQuery实现选中弹出窗口选择框内容后赋值给文本框的方法
Nov 23 Javascript
基于Bootstrap里面的Button dropdown打造自定义select
May 30 Javascript
input file上传 图片预览功能实例代码
Oct 25 Javascript
详解vue.js之props传递参数
Dec 12 Javascript
微信小程序封装自定义弹窗的实现代码
May 08 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+mysqli使用面向对象方式更新数据库实例
2015/01/29 PHP
PHP实现的最大正向匹配算法示例
2017/12/19 PHP
php文件包含的几种方式总结
2019/09/19 PHP
nicejforms——美化表单不用愁
2007/02/20 Javascript
学习js所必须要知道的一些
2007/03/07 Javascript
jQuery实现公告文字左右滚动的实例代码
2013/10/29 Javascript
jQuery 追加元素的方法如append、prepend、before
2014/01/16 Javascript
22点关于jquery性能优化的建议
2014/05/28 Javascript
使用documentElement正确取得当前可见区域的大小
2014/07/25 Javascript
javascript实现限制上传文件大小
2015/02/06 Javascript
不依赖Flash和任何JS库实现文本复制与剪切附源码下载
2015/10/09 Javascript
js 右侧浮动层效果实现代码(跟随滚动)
2015/11/22 Javascript
jQuery插件Validate实现自定义校验结果样式
2016/01/18 Javascript
AngularJS基础 ng-selected 指令简单示例
2016/08/03 Javascript
jQuery快速实现商品数量加减的方法
2017/02/06 Javascript
用vue写一个仿简书的轮播图的示例代码
2018/03/13 Javascript
python 算法 排序实现快速排序
2012/06/05 Python
使用Python设置tmpfs来加速项目的教程
2015/04/17 Python
Python作用域用法实例详解
2016/03/15 Python
Python字典实现简单的三级菜单(实例讲解)
2017/07/31 Python
python爬虫_微信公众号推送信息爬取的实例
2017/10/23 Python
Python Tkinter实现简易计算器功能
2018/01/30 Python
Python SMTP发送邮件遇到的一些问题及解决办法
2018/10/24 Python
Python批量生成特定尺寸图片及图画任意文字的实例
2019/01/30 Python
Pytorch中accuracy和loss的计算知识点总结
2019/09/10 Python
Python实现冒泡排序算法的完整实例
2020/11/04 Python
一套C#面试题
2013/10/09 面试题
Java软件工程师综合面试题笔试题
2013/09/08 面试题
企业行政文员岗位职责
2013/12/03 职场文书
学习委员自我鉴定
2014/01/13 职场文书
专业求职信撰写要诀
2014/02/18 职场文书
大学生村官考核材料
2014/05/23 职场文书
品牌推广活动策划方案
2014/08/19 职场文书
Vue.js 带下拉选项的输入框(Textbox with Dropdown)组件
2021/04/17 Vue.js
SQL中的三种去重方法小结
2021/11/01 SQL Server
python对文档中元素删除,替换操作
2022/04/02 Python