前端学习笔记之五——按照自己的理解写一个闭包

最近工作忙,好几天没学习了。不过一有空还是要给自己加油的。

还是按照论坛的思路,一个题一个题地往下做,一步一个脚印。

今天的作业是:

----------------------------------------------------------------

闭包,貌似是前端领域最重要的关键词之一。记得之前看达内的视频,讲js的张东老师说,闭包非常重要,重要到你们必须每天都要复习一遍。好吧,那现在就来温习一遍。

***闭包:在函数外也可使用局部变量的特殊语法现象。

***何时使用闭包:即共享局部变量,又不希望随便篡改时。

***构建一个闭包结构:3步:
           1. 使用外层函数封装受保护的局部变量
           2. 在外层函数内定义专门操作局部变量的内层函数
              *并返回*。
          3. 在全局调用外层函数,获得内层函数的对象,保存在全局变量中反复使用。
     ***闭包三特点:
          1. 嵌套函数
          2. 内层函数使用了外层函数的局部变量
          3. 内层函数对象被返回到外部,在全局反复调用

***闭包示例:

function f1(){
                 var n=999;
                 nAdd=function(){n+=1}
                 function f2(){alert(n);}
                 return f2;
            }  
            var result=f1();
           result();    //999
           nAdd();      
          result();    //1000

-------------------------------------

论坛里还有位同学,写了这样一个闭包:

function fn(n) {

var count = n;

var tem = function (m) {

count = count * m;

return tem;

};

tem.toString = function () {

return count

};

return tem;

}

console.log(fn(2)(3)(4));   //24

只是不太明白这个闭包为什么最后打印的结果是24,有木有知道的同学呢?

时间: 2024-11-07 10:51:29

前端学习笔记之五——按照自己的理解写一个闭包的相关文章

WEB前端学习笔记 一

最近时间比较充裕,整理了一下学习过的笔记,此篇笔记包含了:Html.Css.JavaScript.Jquery.以及使用帝国CMS或是织梦CMS建立自己的网站,也许也会整理一下PHP的笔记,如果时间允许会整理完全. 虽然笔记是从最基础的开始,但是,并不包含电脑的基础知识,所以你必须已经掌握了一些电脑的基本操作,比如开关机,你的电脑用的是什么操作系统,至少也要会用word和wps吧.浏览器是做什么的,什么拷贝.复制.粘贴.知道最基本的文件类型,如,文本文件,视频文件,图片文件,什么是可执行文件,分

WEB前端学习笔记 四

接上一篇,web学习笔记 四,在此感谢您对此篇笔记的认可,但转发时请注明文章出自网知博学. 2.0  html的语法格式 html的标签要写在尖括号中 :<> 在在英文输入法状态下,按住shift键然后再按它左侧的尖括号就可了, 先学习一个简单的h1标签,是个标题标签,在html中这样写: <h1>我在h1标签中,我就是标题</h1> 那么h1标签中所包裹的文字,就标记成标题了.通过浏览器的解析后在页面上显示出来的效果就是字体加粗,加黑,和word中的标题性质一样! 大

WEB前端学习笔记 五

接web前端学习笔记第四篇,此篇为web学习笔记 五,在此感谢您的采集和转发,但请注明文章出自网知博学. 2.0.3  html标签的属性格式 现在我们知道了两个双标签分别是,标题标签:<h1> - <h6>.和段落标签:<p></p>还知道了一个换行的单标签:<br />,现在我们给<p></p>标签添加一个属性,来改变段落是右对齐,还是左对齐,还是居中. 如上图,<p>标签中的 align(中文就是排列的意

Web前端学习笔记(001)

....编号    ........类别    ............条目  ................明细....................时间 一.Web前端学习笔记                                    2016年6月15日10:38:53    /****************************************************************begin******************************

2017-2-15从0开始前端学习笔记-文本

2017-2-15从0开始前端学习笔记-文本 标签 文本 粗体和斜体 <b>bold粗体</b> <i>italic斜体</i> 上标和下标 <sup>上标</sup> <sub>下标</sub> 空白 换行符和水品线 <br/>换行符 <hr/>水平线 语义化标记 加粗和强调 <strong>加粗 加强语气</strong> <em>强调 斜体 能改

MySQL学习笔记之五 有关数据表操作

MySQL在创建表的时候,创建一个.frm文件保存表和列定义.索引存储在一个有.MYI(MYindex)扩展名的文件并且数据存储在有.MYD(MYData)扩展名的文件中.   一.用SHOW/ DESCRIBE语句显示数据表的信息 语法: SHOW TABLES [FROM db_name] [LIKE wild] or SHOW COLUMNS FROM tbl_name [FROM db_name] [LIKE wild] or SHOW INDEX FROM tbl_name [FROM

Citrix XenMobile学习笔记之五:XenMoble架构组件

XenMobile Enterprise包含了电子邮件和网页浏览等安全的移动生产应用程序,并且保障档共享.同步处理和编辑的安全.Citrix凭借这个无可比拟的整合式移动服务,成功在企业移动办公市场上脱颖而出,傲视同侪. 现今的工作模式讲求从各种移动装置上安全和顺利地存取应用程序与资料.员工则需从易用的统一化企业app store,获取移动.Windows.网络及软件即服务(Software as a service,SaaS)应用程序.员工需要能够随时随地检视.编辑.同步处理和分享资料,并在各种

linux网络编程学习笔记之五 -----并发机制与线程?

进程线程分配方式 简述下常见的进程和线程分配方式:(好吧,我仅仅是举几个样例作为笔记...并发的水太深了,不敢妄谈...) 1.进程线程预分配 简言之,当I/O开销大于计算开销且并发量较大时,为了节省每次都要创建和销毁进程和线程的开销.能够在请求到达前预先进行分配. 2.进程线程延迟分配 预分配节省了处理时的负担,但操作系统管理这些进程线程也会带来一定的开销.由此,有个折中的方法是,当某个处理须要花费较长时间的时候,我们创建一个并发的进程或线程来处理该请求.实现也非常easy,在主线程中定时,定

linux网络编程学习笔记之五 -----并发机制与线程池

进程线程分配方式 简述下常见的进程和线程分配方式:(好吧,我只是举几个例子作为笔记...并发的水太深了,不敢妄谈...) 1.进程线程预分配 简言之,当I/O开销大于计算开销且并发量较大时,为了节省每次都要创建和销毁进程和线程的开销.可以在请求到达前预先进行分配. 2.进程线程延迟分配 预分配节省了处理时的负担,但操作系统管理这些进程线程也会带来一定的开销.由此,有个折中的方法是,当某个处理需要花费较长时间的时候,我们创建一个并发的进程或线程来处理该请求.实现也很简单,在主线程中定时,定时到期,