- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
深入研究JavaScript的匿名函数
深入研究JavaScript的匿名函数
jQuery片段:
(function(){
//这里忽略jQuery所有实现
})();
(function(){ //这里忽略jQuery所有实现 })();
半年前初次接触jQuery的时候,我也像其他人一样很兴奋地想看看源码是什么样的。然而,在看到源码的第一眼,我就迷糊了。为什么只有一个匿 名函数又没看到运行(当然是运行了……),就能有jQuery这么个函数库了?于是,我抱着疑问来到CSDN。结果相信现在很多人都很清楚了(因为在我之 后也不乏来者,呵呵~)。当一个匿名函数被括起来,然后再在后面加一个括号,这个匿名函数就能立即运行起来!真神奇哦!
嘿嘿!胡闹到此为止。在这一节,我们碰到的jQuery片段是一组立即运行的匿名函数。而这种用法在论坛上也曾引起过激辩——这段代码究竟属不 属于闭包呢?带着这个疑问,我们从基础开始,分析每个关键要素,寻找属于自己的答案。(没错,自己的答案!在我看来,所有理论只是形式,只要它有利于我们 的应用实现,就是可取的——黑猫白猫,抓到老鼠的就是好猫!)
要说匿名函数,我们首先要由函数本身说起。函数的定义如下:
函数是将唯一的输出值赋予给每一输入的“法则”。
当然,这只是数学上的定义。但是,在计算机编程语言中,函数的定义也八九不离十。因为,我们都知道,计算机中的函数,也类似数学定义中的描述,它是将输入的若干数据,经过代码设定的逻辑操作处理后,返回唯一的输出的一组代码组合块。——当然,特例是,输入的数据为空或输出的数据为空,或者两者都为空。
下面,我们先初步了解一下和匿名函数相关的概念。
函数声明(function 语句)
要使用一个函数,我们就得首先声明它的存在。而我们最常用的方式就是使用function语句来定义一个函数,如:
function abc(){
// code to process
}
function abc(){ // code to process }
当然,你的函数也可以是带参数的,甚至是带返回值的。
function abc(x,y){
return x+y;
}
function abc(x,y){ return x+y; }
但是,无论你怎么去定义你的函数,JS解释器都会把它翻译成一个Function对象。例如,你在定义上面的其中一个例子的函数号,再输入如下代码:
alert(typeof(abc));// function
你的浏览器就会弹出提示框,提示你abc是一个Function对象。那么Function对象究竟是什么呢?
Function 对象
Function对象是JavaScript里面的固有对象,所有的函数实际上都是一个Function对象。关于这个方面的讨论,我们留到下一个专题节。我们先看看,Function对象能不能直接运用构造函数创建一个新的函数呢?答案是肯定的。例如:
var abc = new Function(x,y,return x*y;);
alert(abc(2,3)); // 6
var abc = new Function(x,y,return x*y;); alert(abc(2,3)); // 6
相信大家现在对如何声明一个函数应该是有所了解了。那么什么才是匿名函数呢?
声明匿名函数
顾名思义,匿名函数就是没有实际名字的函数。例如,我们把上面的例子中,函数的名字去掉,再判断一下他是不是一个函数:
alert(typeof function(){});// function
alert(typeof function(x,y){return x+y;});// function
alert(typeof new Function(x,y,return x*y;))// function
alert(typeof function(){});// function alert(typeof function(x,y){return x+y;});// function alert(typeof new Function(x,y,return x*y;))// function
我们可以很容易地看到,它们全都是Function对象,换言之,他们都是函数,但是他们都有一个特点——没有名字。所以我们把他们称作“匿名函数”。然而,正因为他们没有“名字”,我们也没有办法找到他们。这就引申了如何去调用一个匿名函数的问题了。
匿名函数的调用
要调用一个函数,我们必须要有方法定位它,引用它。所以,我们会需要帮它找一个名字。例如:
var abc=functio
您可能关注的文档
- 浮膝损伤.ppt
- 浮漂制作工艺流程.doc
- 浴场开业前培训.doc
- 海上平台消防水灭火系统设置要求.doc
- 浮法玻璃熔窑节能措施的应用.doc
- 浦发 个贷中心岗位设置及岗位职责说明.doc
- 浪潮集团财务风险控制.doc
- 海上货物运输、船舶强度.ppt
- 海信温泉王朝项目推广策略及广告表现.ppt
- 海事行政执法证据收集要求.doc
- 2024年中考英语现在完成时专项练习.docx
- 命题方式押题03:材料作文(十篇)-备战2024年中考语文作文考前抢分模板与必备素材范文.docx
- 2024年甘肃省庆阳市二模地理试题(附答案解析).docx
- 2024年重庆中考作文押题(十篇):考查趋势+真题解析+题目猜想.docx
- 万能模板01:记叙文模板-备战2024年中考语文作文考前抢分模板与必备素材范文.docx
- 2024年上海中考作文押题(十篇):考查趋势+真题解析+题目猜想.docx
- 2024年黑龙江省齐齐哈尔市中考二模地理试题(附答案解析).docx
- 精品解析:2024年河南省信阳市光山县中考二模生物试题(解析版).docx
- 2024年中考物理专题训练——压强的综合计算.docx
- 2024年中考生物(人教版)一轮复习课件:3.3绿色植物与生物圈的水循环.pptx
文档评论(0)