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(js)设置默认输入焦点(focus)
Dec 28 Javascript
jQuery 插件仿百度搜索框智能提示(带Value值)
Jan 22 Javascript
js实时获取系统当前时间实例代码
Jun 28 Javascript
纯文字版返回顶端的js代码
Aug 01 Javascript
js字符串转成JSON
Nov 07 Javascript
iframe窗口高度自适应的实现方法
Jan 08 Javascript
js格式化时间小结
Nov 03 Javascript
深入理解JavaScript系列(26):设计模式之构造函数模式详解
Mar 03 Javascript
bootstrap css样式之表单
Jan 19 Javascript
js推箱子小游戏步骤代码解析
Jan 10 Javascript
vue19 组建 Vue.extend component、组件模版、动态组件 的实例代码
Apr 04 Javascript
Vue项目中如何使用Axios封装http请求详解
Oct 23 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中遍历二维数组的几种方法详解
2013/06/08 PHP
php动态绑定变量的用法
2015/06/16 PHP
js基于qrcode.js生成二维码的方法【附demo插件源码下载】
2016/12/28 PHP
jquery BS,dialog控件自适应大小
2009/07/06 Javascript
javascript实现tabs选项卡切换效果(自写原生js)
2013/03/19 Javascript
js 单击式的下拉菜单效果实例
2013/08/13 Javascript
jQuery拖拽 & 弹出层 介绍与示例
2013/12/27 Javascript
jQuery表格插件datatables用法总结
2014/09/05 Javascript
node.js中的buffer.toString方法使用说明
2014/12/14 Javascript
jQuery中toggleClass()方法用法实例
2015/01/05 Javascript
smartcrop.js智能图片裁剪库
2015/10/14 Javascript
使用jquery实现鼠标滑过弹出更多相关信息层附源码下载
2015/11/23 Javascript
js中用cssText设置css样式的简单方法
2016/09/19 Javascript
Bootstrap组合上、下拉框简单实现代码
2017/03/06 Javascript
详解Javascript 中的 class、构造函数、工厂函数
2017/12/20 Javascript
angularjs的单选框+ng-repeat的实现方法
2018/09/12 Javascript
python用reduce和map把字符串转为数字的方法
2016/12/19 Python
Python json 错误xx is not JSON serializable解决办法
2017/03/15 Python
Python使用文件锁实现进程间同步功能【基于fcntl模块】
2017/10/16 Python
Python3 伪装浏览器的方法示例
2017/11/23 Python
python中numpy的矩阵、多维数组的用法
2018/02/05 Python
python实现黑客字幕雨效果
2018/06/21 Python
对tensorflow 的模型保存和调用实例讲解
2018/07/28 Python
python如何发布自已pip项目的方法步骤
2018/10/09 Python
python模块导入的细节详解
2018/12/10 Python
对python 自定义协议的方法详解
2019/02/13 Python
python Elasticsearch索引建立和数据的上传详解
2019/08/04 Python
matplotlib绘制多个子图(subplot)的方法
2019/12/03 Python
Python生成器next方法和send方法区别详解
2020/05/30 Python
详解pandas中利用DataFrame对象的.loc[]、.iloc[]方法抽取数据
2020/12/13 Python
马歇尔耳机官网:Marshall Headphones
2020/02/04 全球购物
理工大学毕业生自荐信
2013/11/01 职场文书
读书小明星事迹材料
2014/05/03 职场文书
2015年中学元旦晚会活动方案
2014/12/09 职场文书
python3 删除所有自定义变量的操作
2021/04/08 Python
Golang 遍历二叉树
2022/04/19 Golang