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 相关文章推荐
sina的lightbox效果。
Jan 09 Javascript
js 浏览器事件介绍
Mar 30 Javascript
JQuery分别取得每行最后一列和最后一行的示例代码
Aug 18 Javascript
基于javascript实现九九乘法表
Mar 27 Javascript
js判断出两个字符串最大子串的函数实现方法
Nov 01 Javascript
原生js实现水平方向无缝滚动
Jan 10 Javascript
vue.js实现条件渲染的实例代码
Jun 22 Javascript
JS实现搜索关键词的智能提示功能
Jul 07 Javascript
js实现敏感词过滤算法及实现逻辑
Jul 24 Javascript
JS中类的静态方法,静态变量,实例方法,实例变量区别与用法实例分析
Mar 14 Javascript
vue+canvas实现移动端手写签名
May 21 Javascript
vue3+typescript实现图片懒加载插件
Oct 26 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实现的简单压缩英文字符串的代码
2008/04/24 PHP
ThinkPHP调用百度翻译类实现在线翻译
2014/06/26 PHP
PHP编程中的__clone()方法使用详解
2015/11/27 PHP
PHP版本的选择5.2.17 5.3.27 5.3.28 5.4 5.5兼容性问题分析
2016/04/04 PHP
TP5.0框架实现无限极回复功能的方法分析
2019/05/04 PHP
js prototype 格式化数字 By shawl.qiu
2007/04/02 Javascript
javascript中onclick(this)用法介绍
2013/04/19 Javascript
从jquery的过滤器.filter()方法想到的
2013/09/29 Javascript
ExtJS4如何自动生成控制grid的列显示、隐藏的checkbox
2014/05/02 Javascript
javascript框架设计读书笔记之数组的扩展与修复
2014/12/02 Javascript
Bootstarp风格的toggle效果分享
2016/02/23 Javascript
jQuery 获取跨域XML(RSS)数据的相关总结分析
2016/05/18 Javascript
Jquery和Js获得元素标签名称的方法总结
2016/10/08 Javascript
Iphone手机、安卓手机浏览器控制默认缩放大小的方法总结(附代码)
2017/08/18 Javascript
Nodejs+angularjs结合multiparty实现多图片上传的示例代码
2017/09/29 NodeJs
通过fastclick源码分析彻底解决tap“点透”
2017/12/24 Javascript
如何封装了一个vue移动端下拉加载下一页数据的组件
2019/01/06 Javascript
vue实现的网易云音乐在线播放和下载功能案例
2019/02/18 Javascript
基于vue 动态菜单 刷新空白问题的解决
2020/08/06 Javascript
python基于mysql实现的简单队列以及跨进程锁实例详解
2014/07/07 Python
Python中3种内建数据结构:列表、元组和字典
2014/11/30 Python
python运行时间的几种方法
2016/06/17 Python
Python通过调用mysql存储过程实现更新数据功能示例
2018/04/03 Python
djano一对一、多对多、分页实例代码
2019/08/16 Python
ubuntu 安装pyqt5和卸载pyQt5的方法
2020/03/24 Python
css3的过滤效果简单实例
2016/08/03 HTML / CSS
Alba Moda瑞士网上商店:独家意大利时尚女装销售
2016/11/28 全球购物
DJI美国:消费类无人机领域的领导者
2018/04/27 全球购物
学生生病请假条范文
2014/02/16 职场文书
党员公开承诺书
2014/03/25 职场文书
销售团队口号大全
2014/06/06 职场文书
求职导师推荐信范文
2015/03/27 职场文书
五星级酒店宣传口号
2015/12/25 职场文书
Python爬取科目四考试题库的方法实现
2021/03/30 Python
使用pytorch实现线性回归
2021/04/11 Python
JavaScript 原型与原型链详情
2021/11/02 Javascript