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 相关文章推荐
Document 对象的常用方法
Jul 31 Javascript
jquery的extend和fn.extend的使用说明
Jan 09 Javascript
jquery 无限级联菜单案例分享
Mar 26 Javascript
浅析webapp框架AngularUI的demo
Dec 21 Javascript
EditPlus 正则表达式 实战(3)
Dec 15 Javascript
Bootstrap 模态框实例插件案例分析
Dec 28 Javascript
fullCalendar中文API官方文档
Feb 07 Javascript
vue中用H5实现文件上传的方法实例代码
May 27 Javascript
Angular.js中angular-ui-router的简单实践
Jul 18 Javascript
Mint UI 基于 Vue.js 移动端组件库
Nov 07 Javascript
element上传组件循环引用及简单时间倒计时的实现
Oct 01 Javascript
推荐一个基于Node.js的表单验证库
Feb 15 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+mysql 采用ajax技术的 省 市 地 3级联动无刷新菜单 源码
2006/12/16 PHP
ThinkPHP连接数据库的方式汇总
2014/12/05 PHP
WordPress中制作导航菜单的PHP核心方法讲解
2015/12/11 PHP
JavaScript XML实现两级级联下拉列表
2008/11/10 Javascript
jQuery第三课 修改元素属性及内容的代码
2010/03/14 Javascript
ff下JQuery无法监听input的keyup事件的解决方法
2013/12/12 Javascript
jquery动态添加元素事件失效问题解决方法
2014/05/23 Javascript
详解JavaScript的AngularJS框架中的表达式与指令
2016/03/05 Javascript
基于jquery实现轮播焦点图插件
2016/03/31 Javascript
jQuery获取父元素及父节点的方法小结
2016/04/14 Javascript
JavaScript实现获取远程的html到当前页面中
2017/03/26 Javascript
利用JS对iframe父子(内外)页面进行操作的方法教程
2017/06/15 Javascript
vue元素实现动画过渡效果
2017/07/01 Javascript
使用js获取伪元素的content实例
2017/10/24 Javascript
javaScript日期工具类DateUtils详解
2017/12/08 Javascript
vue实现图片滚动的示例代码(类似走马灯效果)
2018/03/03 Javascript
Node.js assert断言原理与用法分析
2019/01/04 Javascript
JavaScript函数定义方法实例详解
2019/03/05 Javascript
每周一练 之 数据结构与算法(Stack)
2019/04/16 Javascript
使用webpack4编译并压缩ES6代码的方法示例
2019/04/24 Javascript
Vue 前端实现登陆拦截及axios 拦截器的使用
2019/07/17 Javascript
简单了解Vue + ElementUI后台管理模板
2020/04/07 Javascript
如何在vue中使用HTML 5 拖放API
2021/01/14 Vue.js
python解决Fedora解压zip时中文乱码的方法
2016/09/18 Python
Python实现多线程的两种方式分析
2018/08/29 Python
对python实现合并两个排序链表的方法详解
2019/01/23 Python
python启动应用程序和终止应用程序的方法
2019/06/28 Python
python requests证书问题解决
2019/09/05 Python
python实现爱奇艺登陆密码RSA加密的方法示例详解
2020/05/27 Python
通过实例解析python创建进程常用方法
2020/06/19 Python
电子商务毕业生求职信
2013/11/10 职场文书
遗嘱公证书标准样本
2014/04/08 职场文书
2015年度残疾人工作总结
2015/05/14 职场文书
开天辟地观后感
2015/06/09 职场文书
python如何利用cv2模块读取显示保存图片
2021/06/04 Python
Win11怎么解除儿童账号限制?Win11解除微软儿童账号限制方法
2022/07/07 数码科技