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 相关文章推荐
$()JS小技巧
Jul 21 Javascript
JavaScript类和继承 prototype属性
Sep 03 Javascript
一分钟理解js闭包
May 04 Javascript
JavaScript 控制字体大小设置的方法
Nov 23 Javascript
使用jQuery.Pin垂直滚动时固定导航
May 24 jQuery
JavaScript实现微信号随机切换代码
Mar 09 Javascript
微信sdk实现禁止微信分享(使用原生php实现)
Nov 15 Javascript
基于javascript实现贪吃蛇小游戏
Nov 25 Javascript
javascript中的相等操作符(==与===区别)
Dec 21 Javascript
vue2.0实现列表数据增加和删除
Jun 17 Javascript
UEditor 自定义图片视频尺寸校验功能的实现代码
Oct 20 Javascript
解决antd 下拉框 input [defaultValue] 的值的问题
Oct 31 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通过header实现文本文件下载的代码
2010/08/08 PHP
php做下载文件的实现代码及文件名中乱码解决方法
2011/02/03 PHP
php源码分析之DZX1.5字符串截断函数cutstr用法
2015/06/17 PHP
全新Mac配置PHP开发环境教程
2016/02/03 PHP
Zend Framework前端控制器用法示例
2016/12/11 PHP
PHP实现对xml的增删改查操作案例分析
2017/05/19 PHP
jquery文本框中的事件应用以输入邮箱为例
2014/05/06 Javascript
node.js中的events.emitter.listeners方法使用说明
2014/12/10 Javascript
jQuery插件jcrop+Fileapi完美实现图片上传+裁剪+预览的代码分享
2015/04/22 Javascript
JS与Ajax Get和Post在使用上的区别实例详解
2016/06/08 Javascript
使用jquery datatable和bootsrap创建表格实例代码
2017/03/17 Javascript
vue router路由嵌套不显示问题的解决方法
2017/06/17 Javascript
浅谈Vue数据响应
2018/11/05 Javascript
JS常用正则表达式超全集(密码强度校验,金额校验,IE版本,IPv4,IPv6校验)
2020/02/03 Javascript
Js Snowflake(雪花算法)生成随机ID的实现方法
2020/08/26 Javascript
原生JavaScript实现随机点名表
2021/01/14 Javascript
python继承和抽象类的实现方法
2015/01/14 Python
Python中的左斜杠、右斜杠(正斜杠和反斜杠)
2016/08/30 Python
python 把数据 json格式输出的实例代码
2016/10/31 Python
python3+PyQt5实现使用剪贴板做复制与粘帖示例
2017/01/24 Python
Tornado 多进程实现分析详解
2018/01/12 Python
python实现百万答题自动百度搜索答案
2018/01/16 Python
python re模块findall()函数实例解析
2018/01/19 Python
python笔记之mean()函数实现求取均值的功能代码
2019/07/05 Python
Python调用Windows命令打印文件
2020/02/07 Python
Python任务自动化工具tox使用教程
2020/03/17 Python
关于CSS Tooltips(鼠标经过时显示)的效果
2013/04/10 HTML / CSS
.NET程序员的数据库面试题
2012/10/10 面试题
Linux面试经常问的文件系统操作命令
2015/11/05 面试题
销售辞职报告范文
2014/01/12 职场文书
宣传口号大全
2014/06/16 职场文书
小学运动会报道稿
2014/10/04 职场文书
个人事迹材料怎么写
2014/12/30 职场文书
感谢信范文大全
2015/01/23 职场文书
选择比努力更重要?这是长期以来对“努力”的最大误解
2019/07/12 职场文书
Python必备技巧之字符数据操作详解
2022/03/23 Python