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 对Cookie 操作的封装小结
Dec 31 Javascript
Javascript学习笔记 delete运算符
Sep 13 Javascript
一些常用弹出窗口/拖放/异步文件上传等实用代码
Jan 06 Javascript
jquery scrollTop方法根据滚动像素显示隐藏顶部导航条
May 27 Javascript
javaScript中with函数用法实例分析
Jun 08 Javascript
jquery计算出left和top,让一个div水平垂直居中的简单实例
Jul 13 Javascript
javascript实现多张图片左右无缝滚动效果
Mar 22 Javascript
详解适配器在JavaScript中的体现
Sep 28 Javascript
javascript中一些奇葩的日期换算方法总结
Nov 14 Javascript
浅谈小程序globalData的那些事儿
Nov 01 Javascript
JavaScript对象原型链原理详解
Feb 05 Javascript
Vue前端判断数据对象是否为空的实例
Sep 02 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
最小化数据传输――在客户端存储数据
2006/10/09 PHP
php中使用preg_match_all匹配文章中的图片
2013/02/06 PHP
php实现的常见排序算法汇总
2014/09/08 PHP
PHP实现的自定义数组排序函数与排序类示例
2016/11/18 PHP
Javascript中的数学函数集合
2007/05/08 Javascript
使Ext的Template可以解析二层的json数据的方法
2007/12/22 Javascript
js实现兼容IE6与IE7的DIV高度
2010/05/13 Javascript
原生js 秒表实现代码
2012/07/24 Javascript
node.js中的fs.chownSync方法使用说明
2014/12/16 Javascript
JS实现网页右侧带动画效果的伸缩窗口代码
2015/10/29 Javascript
使用Jasmine和Karma对AngularJS页面程序进行测试
2016/03/05 Javascript
第一次接触JS require.js模块化工具
2016/04/17 Javascript
JS iFrame加载慢怎么解决
2016/05/13 Javascript
jQuery简单实现仿京东分类导航层效果
2016/06/07 Javascript
概述一个页面从输入URL到页面加载完的过程
2016/12/16 Javascript
javascript实现滑动解锁功能
2017/03/22 Javascript
利用javascript如何随机生成一定位数的密码
2017/09/22 Javascript
jquery-file-upload 文件上传带进度条效果
2017/11/21 jQuery
jQuery中ajax请求后台返回json数据并渲染HTML的方法
2018/08/08 jQuery
Element-ui树形控件el-tree自定义增删改和局部刷新及懒加载操作
2020/08/31 Javascript
微信小程序实现点击页面出现文字
2020/09/21 Javascript
[01:04:30]Fnatic vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
打印出python 当前全局变量和入口参数的所有属性
2009/07/01 Python
python 实现将多条曲线画在一幅图上的方法
2019/07/07 Python
flask框架json数据的拿取和返回操作示例
2019/11/28 Python
Pandas-Cookbook 时间戳处理方式
2019/12/07 Python
详解Pytorch显存动态分配规律探索
2020/11/17 Python
使用layui框架实现点击左侧导航切换右侧内容且右侧选项卡跟随变化的效果
2020/11/10 HTML / CSS
英国最大的电子产品和家电零售企业:Currys PC World
2016/09/24 全球购物
英格兰足协官方商店:England Store
2019/07/12 全球购物
车间机修工岗位职责
2014/02/28 职场文书
爱与责任演讲稿
2014/05/20 职场文书
2014年采购工作总结
2014/11/20 职场文书
详细总结Python常见的安全问题
2021/05/21 Python
VS2019连接MySQL数据库的过程及常见问题总结
2021/11/27 MySQL
java实现web实时消息推送的七种方案
2022/07/23 Java/Android