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对象链式操作代码(jquery)
Jul 04 Javascript
jQuery 选择器项目实例分析及实现代码
Dec 28 Javascript
jQuery中detach()方法用法实例
Dec 25 Javascript
详解JavaScript的Polymer框架中的通知交互
Jul 29 Javascript
JS+CSS实现仿支付宝菜单选中效果代码
Sep 25 Javascript
Vue2递归组件实现树形菜单
Apr 10 Javascript
JavaScript数组的5种迭代方法
Sep 29 Javascript
解决select2在bootstrap modal中不能正常使用的问题
Aug 09 Javascript
Vue源码解析之Template转化为AST的实现方法
Dec 14 Javascript
elementUI select组件value值注意事项详解
May 29 Javascript
Layui数据表格 前后端json数据接收的方法
Sep 19 Javascript
jQuery轮播图功能制作方法详解
Dec 03 jQuery
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排序算法的复习和总结
2012/02/15 PHP
基于PHP异步执行的常用方式详解
2013/06/03 PHP
PHP使用DES进行加密与解密的方法详解
2013/06/06 PHP
使用php实现截取指定长度
2013/08/06 PHP
php查找任何页面上的所有链接的方法
2013/12/03 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
2017/09/16 PHP
PHP设计模式之建造者模式定义与用法简单示例
2018/08/13 PHP
Laravel自动生成UUID,从建表到使用详解
2019/10/24 PHP
prototype Element学习笔记(篇二)
2008/10/26 Javascript
改进UCHOME的记录发布,增强可访问性用户体验
2011/01/17 Javascript
Javascript 倒计时源代码.(时.分.秒) 详细注释版
2011/05/09 Javascript
JavaScript高级程序设计阅读笔记(五) ECMAScript中的运算符(一)
2012/02/27 Javascript
javascript页面动态显示时间变化示例代码
2013/12/18 Javascript
js仿苹果iwatch外观的计时器代码分享
2015/08/26 Javascript
详解JavaScript数组和字符串中去除重复值的方法
2016/03/07 Javascript
JS之相等操作符详解
2016/09/13 Javascript
jQuery实现的自定义滚动条实例详解
2016/09/20 Javascript
vue中post请求以a=a&b=b 的格式写遇到的问题
2018/04/27 Javascript
nodejs取得当前执行路径的方法
2018/05/13 NodeJs
深入浅析Vue.js 中的 v-for 列表渲染指令
2018/11/19 Javascript
详解mpvue中小程序自定义导航组件开发指南
2019/02/11 Javascript
vue中uni-app 实现小程序登录注册功能
2019/10/12 Javascript
JavaScript使用百度ECharts插件绘制饼图操作示例
2019/11/26 Javascript
Vue v-bind动态绑定class实例方法
2020/01/15 Javascript
Python sys.path详细介绍
2013/10/17 Python
python字典序问题实例
2014/09/26 Python
python线程池(threadpool)模块使用笔记详解
2017/11/17 Python
Python玩转Excel的读写改实例
2019/02/22 Python
python openCV实现摄像头获取人脸图片
2020/08/20 Python
加拿大女包品牌:Matt & Nat
2017/05/12 全球购物
德国自然时尚和有机产品购物网站:Waschbär
2019/05/29 全球购物
心理健康教育心得体会
2013/12/29 职场文书
党员对照检查材料
2014/09/22 职场文书
2015出纳试用期工作总结
2014/12/12 职场文书
个人先进材料范文
2014/12/30 职场文书
同意落户证明
2015/06/19 职场文书