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 相关文章推荐
Extjs在exlipse中设置自动提示的方法
Apr 07 Javascript
jquery插件 autoComboBox 下拉框
Dec 22 Javascript
javascript hashtable 修正版 下载
Dec 30 Javascript
javasctipt如何显示几分钟前、几天前等
Apr 30 Javascript
javascript实现window.print()去除页眉页脚
Dec 30 Javascript
使用AOP改善javascript代码
May 01 Javascript
JavaScript获取服务器端时间的方法
Nov 29 Javascript
微信小程序技巧之show内容展示,上传文件编码问题
Jan 23 Javascript
通过vue-cli3构建一个SSR应用程序的方法
Sep 13 Javascript
vue.js实现的全选与全不选功能示例【基于elementui】
Dec 03 Javascript
vue实现页面滚动到底部刷新
Aug 16 Javascript
vue+elementUI(el-upload)图片压缩,默认同比例压缩操作
Aug 10 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自定义函数返回多个值
2006/11/26 PHP
php继承的一个应用
2011/09/06 PHP
mcrypt启用 加密以及解密过程详细解析
2013/08/07 PHP
解析数组非数字键名引号的必要性
2013/08/09 PHP
php的dl函数用法实例
2014/11/06 PHP
基于PHP实现短信验证码接口(容联运通讯)
2016/09/06 PHP
PHP实现Session入库/存入redis的方法
2017/05/04 PHP
javascript读取RSS数据
2007/01/20 Javascript
JavaScript数值转换的三种方式总结
2014/07/31 Javascript
改变checkbox默认选中状态及取值的实现代码
2016/05/26 Javascript
AngularJS入门教程之更多模板详解
2016/08/19 Javascript
js控制台输出的方法(详解)
2016/11/26 Javascript
Angularjs中三种数据的绑定策略(“@”,“=”,“&”)
2016/12/23 Javascript
VUE JS 使用组件实现双向绑定的示例代码
2017/01/10 Javascript
JavaScript设计模式之原型模式分析【ES5与ES6】
2018/07/26 Javascript
layui中table表头样式修改方法
2018/08/15 Javascript
详解Vue This$Store总结
2018/12/17 Javascript
微信小程序 组件的外部样式externalClasses使用详解
2019/09/06 Javascript
python实现异步回调机制代码分享
2014/01/10 Python
python实现自动登录后台管理系统
2018/10/18 Python
Django 实现admin后台显示图片缩略图的例子
2019/07/28 Python
Pycharm激活方法及详细教程(详细且实用)
2020/05/12 Python
Python 实现 T00ls 自动签到脚本代码(邮件+钉钉通知)
2020/07/06 Python
Python尾递归优化实现代码及原理详解
2020/10/09 Python
Django多个app urls配置代码实例
2020/11/26 Python
我的applet原先好好的, 一放到web server就会有问题,为什么?
2016/05/10 面试题
写给老师的表扬信
2014/01/21 职场文书
倡议书格式
2014/04/14 职场文书
家长写给孩子的评语
2014/04/18 职场文书
政工例会汇报材料
2014/08/26 职场文书
党委班子纠正“四风”问题整改措施
2014/10/28 职场文书
2014年数学教研组工作总结
2014/12/06 职场文书
2014年医院后勤工作总结
2014/12/06 职场文书
事业单位个人总结
2015/02/12 职场文书
计生个人工作总结
2015/02/28 职场文书
2019最新校园运动会广播稿!
2019/06/28 职场文书