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 相关文章推荐
$.ajax json数据传递方法
Nov 19 Javascript
JS this作用域以及GET传输值过长的问题解决方法
Aug 06 Javascript
jquery如何扑捉回车键触发的事件
Apr 24 Javascript
从数据库读取数据后将其输出成html标签的三种方法
Oct 13 Javascript
jquery模拟实现鼠标指针停止运动事件
Jan 12 Javascript
浅谈JavaScript的全局变量与局部变量
Jun 10 Javascript
Node.js用readline模块实现输入输出
Dec 16 Javascript
angular $watch 一个变量的变化(实例讲解)
Aug 02 Javascript
webpack 单独打包指定JS文件的方法
Feb 22 Javascript
es6中class类静态方法,静态属性,实例属性,实例方法的理解与应用分析
Feb 15 Javascript
JS数组的高级使用方法示例小结
Mar 14 Javascript
详解element-ui 表单校验 Rules 配置 常用黑科技
Jul 11 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中require和include路径问题详解
2014/12/25 PHP
微信公众平台开发教程⑥ 微信开发集成类的使用图文详解
2019/04/10 PHP
因str_replace导致的注入问题总结
2019/08/08 PHP
[原创]站长必须要知道的javascript广告代码
2007/05/30 Javascript
关于js datetime的那点事
2011/11/15 Javascript
基于jQuery的遍历同id元素 并响应事件的代码
2012/06/14 Javascript
解析Jquery中如何把一段html代码动态写入到DIV中(实例说明)
2013/07/09 Javascript
JS:window.onload的使用介绍
2013/11/13 Javascript
jquery 操作两个select实现值之间的互相传递
2014/03/07 Javascript
JS实现的一个简单的Autocomplete自动完成例子
2014/04/16 Javascript
JS实现兼容性好,自动置顶的淘宝悬浮工具栏效果
2015/09/18 Javascript
Immutable 在 JavaScript 中的应用
2016/05/02 Javascript
ReactJs快速入门教程(精华版)
2016/11/28 Javascript
IScroll那些事_当内容不足时下拉刷新的解决方法
2017/07/18 Javascript
基于JavaScript实现评论框展开和隐藏功能
2017/08/25 Javascript
手写Node静态资源服务器的实现方法
2018/03/20 Javascript
AngularJS发送异步Get/Post请求方法
2018/08/13 Javascript
nuxt踩坑之Vuex状态树的模块方式使用详解
2019/09/06 Javascript
vue+element搭建后台小总结 el-dropdown下拉功能
2020/04/10 Javascript
Python语言的面相对象编程方式初步学习
2016/03/12 Python
python基础之包的导入和__init__.py的介绍
2018/01/08 Python
Python设计模式之享元模式原理与用法实例分析
2019/01/11 Python
python序列化与数据持久化实例详解
2019/12/20 Python
pandas实现excel中的数据透视表和Vlookup函数功能代码
2020/02/14 Python
Django限制API访问频率常用方法解析
2020/10/12 Python
简述网络文件系统NFS,并说明其作用
2016/10/19 面试题
运动会方阵解说词
2014/02/12 职场文书
写求职信有什么意义
2014/02/17 职场文书
巾帼建功标兵事迹材料
2014/05/11 职场文书
汽车转让协议书范本
2014/12/07 职场文书
2015年卫生监督工作总结
2015/05/21 职场文书
初二数学教学反思
2016/02/17 职场文书
2019年大学毕业生个人自我鉴定范文大全
2019/03/21 职场文书
Python Matplotlib库实现画局部图
2021/11/17 Python
Go语言的协程上下文的几个方法和用法
2022/04/11 Golang
vue.js 使用原生js实现轮播图
2022/04/26 Vue.js