之前在第36章的时候弄了三个闭包的面试题,前面两个我都懂,可是第三个确实把我绕蒙了,不过好在现在已经搞明白了,这是原题链接,建议自己先做,然后再看解析。

function fun(n, o) {console.log(o)return {fun: function(m) {return fun(m, n)}}
}
var a = fun(0)
a.fun(1)
a.fun(2)
a.fun(3) //undefined,0,0,0
/*
闭包就是函数的嵌套,内部函数引用了外部函数的变量n。第一次:n=0,o=undefined,输出o的值undefined,返回一个对象,对象被变量a接收,
那么此时a指向的那块空间中,变量n的值为0,因为这是在外部函数执行后就确定好了的。第二次:直接调用a的fun方法,传的值为1,返回的是一个[调用执行后的函数的返回值]。
在返回前执行外部函数,第一个值传m,也就是1,第二个值传n,也就是0,然后输出第二个值0,返回一个对象。
回到a的fun方法里面,返回上一步的那个对象,但是这个对象没有变量接收,虽然有闭包,但是消失了。第三次及以后,都是直接调用a的fun方法,都没有用变量来接收闭包,所以每次都是输出0。
*/var b = fun(0).fun(1).fun(2).fun(3) //undefined,0,1,2
/*
第一次执行fun(0),输出undefined,那么产生的第一个闭包中,n的值为0,这是在外部函数被调用后就确定了的。第二次由于上一次返回的是一个对象,执行对象的方法fun(1),继续执行fun(1, 0),输出0,返回第二个闭包,
在第二个闭包中,n的值为1,这是在外部函数被调用后就确定了的。第三次及以后,每一次都产生一个新的闭包,且都返回了一个对象,这样每次对象中n的值都是上一个闭包中n的值。
*/var c = fun(0).fun(1)
c.fun(2)
c.fun(3) //undefined,0,1,1

41-闭包终极面试题详解相关推荐

  1. 2020年 第11届 蓝桥杯 第2次模拟赛真题详解及小结【Java版】

    蓝桥杯 Java B组 省赛真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 注意:部分代码及程序 源自 蓝桥杯 官网视频(历年真题解析) 郑未老师. 2013年 第04届 蓝桥杯 ...

  2. 【第十三届蓝桥杯C++ B组省赛编程题详解】

    第十三届蓝桥杯C++ B组省赛编程题详解 第一题:刷题统计 题目描述 [Tag:枚举] 小明决定从下周一开始努力刷题准备蓝桥杯竞赛. 他计划周一至周五每天做a道题目,周六和周日每天做b道题目. 请你帮 ...

  3. 视频教程-2020年软考网络规划设计师案例分析历年真题详解软考视频教程-软考

    2020年软考网络规划设计师案例分析历年真题详解软考视频教程 10年以上软考培训经验,线下培训学员过万人.培训过的课程有:网络规划设计师.网络工程师.信 息系统项目管理师.系统集成项目管理师.信息安全 ...

  4. 【华为机试真题详解】小兔子繁殖详解

    文章目录 前言 讲解试题 如何写一个递归函数 DP2 跳台阶 小兔子繁殖 前言 <华为机试真题详解>专栏含牛客网华为专栏.华为面经试题.华为OD机试真题. 如果您在准备华为的面试,期间有想 ...

  5. 第十三届蓝桥杯Python 大学B组真题详解

    第十三届蓝桥杯Python B组真题详解 试题A 排列字母 试题B 寻找整数 试题C 纸张尺寸 试题D 位数排序 试题E 蜂巢 试题F 消除游戏 试题G 全排列的价值 试题H 技能升级 试题I 最长不 ...

  6. ★核心关注点_《信息系统项目管理师考试考点分析与真题详解》

    ★核心关注点_<信息系统项目管理师考试考点分析与真题详解> 真诚感谢你选用<信息系统项目管理师考试考点分析与真题详解>作为高级项管的辅导用书.对于使用该书的读者们,在备考201 ...

  7. 独家 | PHM数据竞赛首个中国夺冠团队经验分享(常用模型赛题详解PPT视频)

    清华大数据"赛事经验分享"系列讲座旨在分享国内外大数据领域重要赛事获胜团队及个人的参赛历程及获胜经验,本期,我们邀请到PHM Data Challenge十年竞赛史上首个完全由中国 ...

  8. 勘误表《网络规划设计师考试考点分析与真题详解》

    <网络规划设计师考试考点分析与真题详解>勘误表 首先,对本书在编写.校对.排版.印刷环节中的错漏,而给各位读者带来不便之处,深表最诚挚的歉意!也恳请各位专家.读者在使用过程中多提宝贵意见及 ...

  9. 《信息系统项目管理师软考辅导——3年真题详解与全真模拟》主要创新点、关注点...

    <信息系统项目管理师软考辅导--3年真题详解与全真模拟>主要创新点.关注点 新增2014年5月.11月两份真题试卷的360°透彻解析: 更新2013年5月.11月真题试卷的解析: 紧扣考纲 ...

最新文章

  1. bzoj1070: [SCOI2007]修车
  2. Windows Server 2008 R2下部署OCS 2007 R2 边缘服务器
  3. git——远程库和本地库
  4. 27、HTML框架(同一个浏览器窗口中显示不止一个页面)
  5. Maven 连接私服资源库配置
  6. 软件工程综合实践专题第三次个人博客作业
  7. ceph中查看一个rbd的image的真实存储位置
  8. MaxCompute Mars 完全指南
  9. 首尔最高旋转餐厅后厨一探究竟
  10. hbase 使用lzo_带你快速上手HBase | HBase列族优化
  11. CentOS 6.5 yum安装配置lnmp服务器(Nginx+PHP+MySQL)
  12. CSS学习笔记----选择器与字体(字系)
  13. bitmap存入mysql,[MySQL] mysql中bitmap的简单运用
  14. 四六级对计算机考研有影响吗,英语四六级对考研有多大影响
  15. 如何用python编写抢票软件哪个好_又到疯狂抢票的高峰期,用python写一个简单的12306抢票软件...
  16. 输入成绩,并计算全班平均分及成绩大于平均分的人数
  17. 08 网上爬取的数据如何制作成表
  18. Python爬虫学习①:
  19. CUDA安装和检测【全】(nvcc命令找不到的解决办法)
  20. Ubuntu18.04下安装Nvidia驱动和CUDA10.1+CUDNN

热门文章

  1. 软件测试自学日语app,学学日文APP
  2. 前端父子页面iframe如何双向发消息?
  3. 使用Visio画流程图
  4. C语言位运算--获取第i位、清零第i位、赋值第i位
  5. 为什么香港服务器可以免备案
  6. 联合国数据库疑似被中国黑客泄漏
  7. 江苏大学计算机学院国家奖学金,江苏大学京江学院 学生素质综合测评办法
  8. lxc和android的双系统,基于LXC的Android系统虚拟化技术
  9. 【阅读3.8w,收藏2000次】97页《Python自动化办公文档》,让您的 “办公效率” 提高100倍,拿走即用!
  10. 班级管理系统的设计与实现/java/SSM