JavaScript匿名函数用法分析


Posted in Javascript onFebruary 13, 2015

本文实例讲述了JavaScript匿名函数用法。分享给大家供大家参考。具体如下:

一、定义一个函数

在JavaScript中,可以通过“函数声明”和“函数表达式”来定义一个函数,比如

1、通过“函数声明”来定义一个函数

function t1(){}

2、通过“函数表达式”来定义一个函数

t2 = function(){}

但是两种方式定义函数,效果是不同的
t1是函数声明,‘词法分析'时,AO.t1 = function(){},-------------在‘词法分析'阶段就发挥作用
t2是赋值操作,‘运行'时,AO.t2 = function(){},值是右边的表达式返回的结果,------在‘运行'阶段才发挥作用

二、匿名函数

在JavaScript中,小括号()里的语句当做表达式来执行,在上面说到,可以使用“函数表达式”来定义一个函数,那么,我们可以在()内定义一个函数,如

(function t3(){alert(' i am t3');})

如果该函数没有使用名字,修改如下

(function(){alert(' i am t3');})

包含在()内的语句既然是表达式,就有返回值,(function(){alert(' i am t3');})的返回值就是定义的函数,可以立即调用,如

(function(){alert(' i am t3');})()

因此,在小括号()内定义一个没有名字的函数,该函数称为匿名函数。这种手法,匿名函数,立即执行,不污染全局,称为 立即执行函数表达式。

三、jquery就是一个匿名函数

jquery的代码就是封装在一个匿名函数中,这是jquery最外层的代码:

(function(window,undefined){})(window);//立即调用

但是jquery为什么传window,不传undefined呢?

答:传window是为了查找速度,减少查询变量的时间。比如下面这段js代码

function(){
 function(){
   function(){
  function(){
   document.getElementById();
//这个document将会沿作用域层层上找,直到最外层window全局。
  }
   }
 }
}

jquery就是为了加快内部查找局部变量的速度,而直接把window以参数形式传进来, 这样window就在jquery内部AO上。

不传undefined是为了安全,因为在低版本的IE,FF中,undefined竟然可以重新赋值,如 undefined=3;

声明局部变量undefined(名字是undefined),同时,又不传参,值自然就是undefined

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
Javascript实例教程(19) 使用HoTMetal(2)
Dec 23 Javascript
JS实现上下左右对称的九九乘法表
Feb 22 Javascript
AngularJS入门教程之控制器详解
Jul 27 Javascript
详解Vue.js基于$.ajax获取数据并与组件的data绑定
May 26 Javascript
jQuery鼠标移动图片上实现放大效果
Jun 25 jQuery
Vue.js学习笔记之修饰符详解
Jul 25 Javascript
vue 里面使用axios 和封装的示例代码
Sep 01 Javascript
解决Vue 浏览器后退无法触发beforeRouteLeave的问题
Dec 24 Javascript
Vuejs 2.0 子组件访问/调用父组件的方法(示例代码)
Feb 08 Javascript
Vue 去除路径中的#号
Apr 19 Javascript
vue组件添加事件@click.native操作
Oct 30 Javascript
如何使用CocosCreator对象池
Apr 14 Javascript
js实现进度条的方法
Feb 13 #Javascript
动态加载js的方法汇总
Feb 13 #Javascript
jQuery EasyUI datagrid实现本地分页的方法
Feb 13 #Javascript
jQuery向后台传入json格式数据的方法
Feb 13 #Javascript
浅谈轻量级js模板引擎simplite
Feb 13 #Javascript
js实现拖拽效果
Feb 12 #Javascript
jQuery多个input求和的实现方法
Feb 12 #Javascript
You might like
PHP 输出URL的快捷方式示例代码
2013/09/22 PHP
四种php中webservice实现的简单架构方法及实例
2015/02/03 PHP
RSA实现JS前端加密与PHP后端解密功能示例
2019/08/05 PHP
PHP mkdir创建文件夹实现方法解析
2020/11/13 PHP
IE本地存储userdata的一个bug说明
2010/07/01 Javascript
S2SH整合JQuery+Ajax实现登录验证功能实现代码
2013/01/30 Javascript
jQuery 关于伪类选择符的使用说明
2013/04/24 Javascript
jQuery防止click双击多次提交及传递动态函数或多参数
2014/04/02 Javascript
jquery和js实现对div的隐藏和显示方法
2014/09/26 Javascript
一个JavaScript操作元素定位元素的实例
2014/10/29 Javascript
详解JavaScript中数组的相关知识
2015/07/29 Javascript
如何实现JavaScript动态加载CSS和JS文件
2020/12/28 Javascript
jQuery控制div实现随滚动条滚动效果
2016/06/07 Javascript
几种tab切换详解
2017/02/03 Javascript
Angularjs实现页面模板清除的方法
2018/07/20 Javascript
vue日历/日程提醒/html5本地缓存功能
2019/09/02 Javascript
[04:28]2014DOTA2国际邀请赛 采访小兔子LGD挺进钥匙体育馆
2014/07/14 DOTA
Python 初始化多维数组代码
2008/09/06 Python
python列表去重的二种方法
2014/02/14 Python
Python使用Flask框架同时上传多个文件的方法
2015/03/21 Python
python MysqlDb模块安装及其使用详解
2018/02/23 Python
使用k8s部署Django项目的方法步骤
2019/01/14 Python
在Python中利用pickle保存变量的实例
2019/12/30 Python
用Python爬取LOL所有的英雄信息以及英雄皮肤的示例代码
2020/07/13 Python
HTML5全屏(Fullscreen)API详细介绍
2015/04/24 HTML / CSS
利用HTML5 Canvas制作一个简单的打飞机游戏
2015/05/11 HTML / CSS
澳大利亚女性快速时尚零售商:Ally Fashion
2018/04/25 全球购物
大学生自我鉴定评语
2014/01/27 职场文书
管理部副部长岗位职责范文
2014/03/09 职场文书
环境工程专业毕业生求职信
2014/09/30 职场文书
毕业实习证明(4篇)
2014/10/28 职场文书
2014年纪检部工作总结
2014/11/12 职场文书
硕士毕业论文导师评语
2014/12/31 职场文书
2014年个人总结范文
2015/03/09 职场文书
中小企业员工手册范本
2015/05/14 职场文书
值班管理制度范本
2015/08/06 职场文书