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 相关文章推荐
扩展String功能方法
Sep 22 Javascript
js类中获取外部函数名的方法与代码
Sep 12 Javascript
javascript根据像素点取位置示例
Jan 27 Javascript
javascript简单实现图片预加载
Dec 03 Javascript
JavaScript中的ArrayBuffer详细介绍
Dec 08 Javascript
jQuery插件版本冲突的处理方法分析
Jan 16 Javascript
深入浅析AngularJS中的一次性数据绑定 (bindonce)
May 11 Javascript
详谈js模块化规范
Jul 07 Javascript
浅谈Vue 初始化性能优化
Aug 31 Javascript
JS二分查找算法详解
Nov 01 Javascript
浅析前端路由简介以及vue-router实现原理
Jun 01 Javascript
使用 Vue 实现一个虚拟列表的方法
Aug 20 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抓即时股票信息
2006/10/09 PHP
定制404错误页面,并发信给管理员的程序
2006/10/09 PHP
深入理解PHP原理之错误抑制与内嵌HTML分析
2011/05/02 PHP
PHP命名空间(Namespace)简明教程
2014/06/11 PHP
Win7 64位系统下PHP连接Oracle数据库
2014/08/20 PHP
PHP开发Apache服务器配置
2015/07/15 PHP
php数组生成html下拉列表的方法
2015/07/20 PHP
PHP通过bypass disable functions执行系统命令的方法汇总
2018/05/02 PHP
HTTP头隐藏PHP版本号实现过程解析
2020/12/09 PHP
Extjs学习笔记之二 初识Extjs之Form
2010/01/07 Javascript
jQuery大于号(>)选择器的作用解释
2015/01/13 Javascript
JS实现网页滚动条感应鼠标变色的方法
2015/02/26 Javascript
IE8利用自带的setCapture和releaseCapture解决iframe的拖拽事件方法
2016/10/25 Javascript
javascript基于牛顿迭代法实现求浮点数的平方根【递归原理】
2017/09/28 Javascript
Vue导出json数据到Excel电子表格的示例
2017/12/04 Javascript
一个简单的node.js界面实现方法
2018/06/01 Javascript
微信小程序实现多行文字超出部分省略号显示功能
2019/10/23 Javascript
js在HTML的三种引用方式详解
2020/08/29 Javascript
JS页面动态绘图工具SVG,Canvas,VML介简介
2020/10/16 Javascript
编写v-for循环的技巧汇总
2020/12/01 Javascript
[02:32]【DOTA2亚洲邀请赛】iceice,梦开始的地方
2017/03/13 DOTA
Python常用内置函数总结
2015/02/08 Python
在Python中处理日期和时间的基本知识点整理汇总
2015/05/22 Python
Python中list列表的一些进阶使用方法介绍
2015/08/15 Python
Python Web框架Tornado运行和部署
2020/10/19 Python
python之django母板页面的使用
2018/07/03 Python
python执行精确的小数计算方法
2019/01/21 Python
Django model重写save方法及update踩坑详解
2020/07/27 Python
戴尔马来西亚官网:Dell Malaysia
2020/05/02 全球购物
几个Shell Script面试题
2014/04/18 面试题
信息技术专业大学生职业生涯规划书
2014/01/24 职场文书
销售人员求职的自我评价分享
2014/03/15 职场文书
3.15国际消费者权益日主题活动活动总结
2014/03/16 职场文书
金融与证券专业求职信
2014/06/22 职场文书
介绍信范文
2015/01/31 职场文书
如何使用Python提取Chrome浏览器保存的密码
2021/06/09 Python