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 判断Flash是否加载完成的代码
Apr 12 Javascript
jquery实现按Enter键触发事件示例
Sep 10 Javascript
Jquery之Bind方法参数传递与接收的三种方法
Jun 24 Javascript
使用javascript实现监控视频播放并打印日志
Jan 05 Javascript
jQuery简单动画变换效果实例分析
Jul 04 Javascript
微信小程序 框架详解及实例应用
Sep 26 Javascript
详解用node编写自己的cli工具
May 23 Javascript
基于rem的移动端响应式适配方案(详解)
Jul 07 Javascript
javaScript中"=="和"==="的区别详解
Mar 16 Javascript
chosen实现省市区三级联动
Aug 16 Javascript
vue本地打开build后生成的dist文件夹index.html问题
Sep 04 Javascript
我所理解的JavaScript中的this指向
Sep 04 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/12/06 PHP
php环境配置 php5 MySQL5 apache2 phpmyadmin安装与配置图文教程
2007/03/16 PHP
PHP 定界符 使用技巧
2009/06/14 PHP
php array_map()数组函数使用说明
2011/07/12 PHP
PHP提示Notice: Undefined variable的解决办法
2012/11/24 PHP
php 下载保存文件保存到本地的两种实现方法
2013/08/12 PHP
php警告Creating default object from empty value 问题的解决方法
2014/04/02 PHP
php常用的url处理函数总结
2014/11/19 PHP
JavaScript实现滚动栏效果的方法
2015/04/27 PHP
Thinkphp批量更新数据的方法汇总
2016/06/29 PHP
Aster vs Newbee BO5 第三场2.19
2021/03/10 DOTA
火狐浏览器(firefox)下获得Event对象以及keyCode
2008/11/13 Javascript
document.onreadystatechange事件的用法分析
2009/10/17 Javascript
在js中单选框和复选框获取值的方式
2009/11/06 Javascript
javascript 模拟JQuery的Ready方法实现并出现的问题
2009/12/06 Javascript
thinkphp 表名 大小写 窍门
2015/02/01 Javascript
jquery实现最简单的滑动菜单效果代码
2015/09/12 Javascript
Javascript获取图片原始宽度和高度的方法详解
2016/09/20 Javascript
详解Angular 4.x NgIf 的用法
2017/05/22 Javascript
webpack配置sass模块的加载的方法
2017/07/30 Javascript
JS/HTML5游戏常用算法之碰撞检测 像素检测算法实例详解
2018/12/12 Javascript
vue计算属性computed、事件、监听器watch的使用讲解
2019/01/21 Javascript
Javascript之高级数组API的使用实例
2019/03/08 Javascript
echarts实现晶体球面投影的实例教程
2020/10/10 Javascript
一张图带我们入门Python基础教程
2017/02/05 Python
Python调用系统底层API播放wav文件的方法
2017/08/11 Python
python实现决策树ID3算法的示例代码
2018/05/30 Python
python3中rank函数的用法
2019/11/27 Python
css 如何让背景图片拉伸填充避免重复显示
2013/07/11 HTML / CSS
遇到的Mysql的面试题
2014/06/29 面试题
土建资料员岗位职责
2014/01/04 职场文书
餐饮投资计划书
2014/04/25 职场文书
王金山在党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书
狮子林导游词
2015/02/03 职场文书
党支部鉴定意见
2015/06/02 职场文书
运动会加油稿30字
2015/07/21 职场文书