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 相关文章推荐
srcElement表格样式
Sep 03 Javascript
设置下载不需要倒计时cookie(倒计时代码)
Nov 19 Javascript
jQuery实现单击按钮遮罩弹出对话框(仿天猫的删除对话框)
Apr 10 Javascript
浅谈页面装载js及性能分析方法
Dec 09 Javascript
jQuery时间轴插件使用详解
Jul 16 Javascript
基于jQuery实现数字滚动效果
Jan 16 Javascript
详解使用React全家桶搭建一个后台管理系统
Nov 04 Javascript
一文搞懂ES6中的Map和Set
May 20 Javascript
小程序实现新用户判断并跳转激活的方法
May 20 Javascript
javascript中undefined的本质解析
Jul 31 Javascript
a标签调用js的方法总结
Sep 05 Javascript
JS实现盒子拖拽效果
Feb 06 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
实现了一个PHP5的getter/setter基类的代码
2007/02/25 PHP
laravel withCount 统计关联数量的方法
2019/10/10 PHP
jquery键盘事件使用介绍
2011/11/01 Javascript
jQuery javaScript捕获回车事件(示例代码)
2013/11/07 Javascript
网站基于flash实现的Banner图切换效果代码
2014/10/14 Javascript
jQuery中 attr() 方法使用小结
2015/05/03 Javascript
js设置document.domain实现跨域的注意点分析
2015/05/21 Javascript
JavaScript中的toLocaleLowerCase()方法使用详解
2015/06/06 Javascript
JS实现具备延时功能的滑动门菜单效果
2015/09/17 Javascript
基于jQuery通过jQuery.form.js插件实现异步上传
2015/12/13 Javascript
在AngularJS中使用jQuery的zTree插件的方法
2016/04/21 Javascript
使用jQuery制作浮动工具栏的实例分享
2016/05/13 Javascript
JavaScript在form表单中使用button按钮实现submit提交方法
2017/01/23 Javascript
解决给dom元素绑定click等事件无效问题的方法
2017/02/17 Javascript
JavaScript自定义文本框光标
2017/03/05 Javascript
jQuery实现左右滑动的toggle方法
2018/03/03 jQuery
详解Webpack-dev-server的proxy用法
2018/09/08 Javascript
vue elementui form表单验证的实现
2018/11/11 Javascript
ES6小技巧之代替lodash
2019/06/07 Javascript
Vue3.0中的monorepo管理模式的实现
2019/10/14 Javascript
JS数组转字符串实现方法解析
2020/09/04 Javascript
python使用wmi模块获取windows下的系统信息 监控系统
2015/10/27 Python
Python3.6使用tesseract-ocr的正确方法
2018/10/17 Python
浅谈python str.format与制表符\t关于中文对齐的细节问题
2019/01/14 Python
Python散点图与折线图绘制过程解析
2019/11/30 Python
python logging通过json文件配置的步骤
2020/04/27 Python
Python 绘制可视化折线图
2020/07/22 Python
H5 canvas实现贪吃蛇小游戏
2017/07/28 HTML / CSS
html5 canvas合成海报所遇问题及解决方案总结
2017/08/03 HTML / CSS
最新计算机专业自荐信
2013/10/16 职场文书
毕业自荐信
2013/12/16 职场文书
2015年世界急救日宣传活动方案
2015/05/06 职场文书
治庸问责工作总结
2015/08/11 职场文书
初中物理教学反思
2016/02/19 职场文书
Idea连接MySQL数据库出现中文乱码的问题
2021/04/14 MySQL
Golang全局变量加锁的问题解决
2021/05/08 Golang