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 相关文章推荐
仿163填写邮件地址自动显示下拉(无优化)
Nov 05 Javascript
!DOCTYPE声明对JavaScript的影响分析
Apr 12 Javascript
JavaScript中变量提升 Hoisting
Jul 03 Javascript
js离开或刷新页面检测(且兼容FF,IE,Chrome)
Mar 05 Javascript
JavaScript立即执行函数的三种不同写法
Sep 05 Javascript
14个有用的Jquery技巧分享
Jan 08 Javascript
JS简单实现String转Date的方法
Mar 02 Javascript
基于jQuery实现仿微博发布框字数提示
Jul 27 Javascript
微信小程序 页面跳转如何实现传值
Apr 05 Javascript
react 生命周期实例分析
May 18 Javascript
微信小程序开发(三):返回上一级页面并刷新操作示例【页面栈】
Jun 01 Javascript
在vscode 中设置 vue模板内容的方法
Sep 02 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
德生S2000电路分析
2021/03/02 无线电
用PHP实现的四则运算表达式计算实现代码
2011/08/02 PHP
使用PHP实现Mysql读写分离
2013/06/28 PHP
PHP错误Allowed memory size of 67108864 bytes exhausted的3种解决办法
2014/07/28 PHP
php通过function_exists检测函数是否存在的方法
2015/03/18 PHP
PHP实现批量上传单个文件
2015/12/29 PHP
php好代码风格的阶段性总结
2016/06/25 PHP
深入浅出讲解:php的socket通信原理
2016/12/03 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
2017/08/28 PHP
jQuery的几个我们必须了解的特点
2015/05/03 Javascript
原生JS和JQuery动态添加、删除表格行的方法
2015/05/28 Javascript
浅析JavaScript 调试方法和技巧
2015/10/22 Javascript
Boostrap入门准备之border box
2016/05/09 Javascript
jQuery模拟完美实现经典FLASH导航动画效果【附demo源码下载】
2016/11/09 Javascript
jQuery实现监听下拉框选中内容发生改变操作示例
2018/07/13 jQuery
JavaScript使用ul中li标签实现删除效果
2019/04/15 Javascript
一些可能会用到的Node.js面试题
2019/06/15 Javascript
python复制与引用用法分析
2015/04/08 Python
Python实现字典依据value排序
2016/02/24 Python
Python 3实战爬虫之爬取京东图书的图片详解
2017/10/09 Python
python实现烟花小程序
2019/01/30 Python
python给指定csv表格中的联系人群发邮件(带附件的邮件)
2019/12/31 Python
Selenium使用Chrome模拟手机浏览器方法解析
2020/04/10 Python
python多线程和多进程关系详解
2020/12/14 Python
联想哥伦比亚网上商城:Lenovo Colombia
2017/01/10 全球购物
武汉某公司的C#笔试题面试题
2015/12/25 面试题
音乐专业自荐信
2014/02/07 职场文书
公司经理聘任书
2014/03/29 职场文书
化工专业自荐书
2014/06/16 职场文书
奉献家乡演讲稿
2014/09/16 职场文书
逃课检讨书
2015/01/26 职场文书
导游词格式
2015/02/13 职场文书
文化苦旅读书笔记
2015/06/29 职场文书
详解Python生成器和基于生成器的协程
2021/06/03 Python
Python实现简单的猜单词
2021/06/15 Python
总结三种用 Python 作为小程序后端的方式
2022/05/02 Python