经典js闭包----对《大部分人都会做错的经典JS闭包面试题》的理解

重新看js闭包的时候看到了《大部分人都会做错的经典JS闭包面试题》,自己理解并记录了下想法。很多部分博主已经讲得很详细了,只是后面的解释部分文字有点绕。

原帖地址:http://web.jobbole.com/84328/

先贴代码

 1 function fun(n,o){
 2     console.log(o);
 3     return {
 4         fun:function(m){
 5             return fun(m,n);
 6         }
 7     }
 8 }
 9
10 var a = fun(0);
11 a.fun(1);
12 a.fun(2);
13 a.fun(3);
14
15 var b=fun(0).fun(1).fun(2).fun(3);
16 var c= fun(0).fun(1);
17 c.fun(2);
18 c.fun(3);

问:每一个输出分别是什么?

答案:

undefined,0,0,0

undefined,0,1,2

undefined,0,1,1

来逐步拆解:

时间: 2024-08-11 07:32:00

经典js闭包----对《大部分人都会做错的经典JS闭包面试题》的理解的相关文章

大部分人都会做错的经典JS闭包面试题

大部分人都会做错的经典JS闭包面试题 目录 由工作中演变而来的面试题 JS中有几种函数 创建函数的几种方式 三个fun函数的关系是什么? 函数作用域链的问题 到底在调用哪个函数? 后话 由工作中演变而来的面试题 这是一个我工作当中的遇到的一个问题,似乎很有趣,就当做了一道题去面试,发现几乎没人能全部答对并说出原因,遂拿出来聊一聊吧. 先看题目代码: function fun(n,o) { console.log(o) return { fun:function(m){ return fun(m,

【转载】大部分人都会做错的经典JS闭包面试题

原文链接http://www.cnblogs.com/xxcanghai/p/4991870.html 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,?,?,? var b = fun(0).fun(1).fun(2).fun(3);//undefined,?,

这道js面试题号称99%的人会做错

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript" src="app/js/jquery-2.1.4.js"></script> <script type="text/javascript&

《设计师要懂心理学》-第九章-人会犯错

第九章  人会犯错 人皆有错,难能宽恕. ——亚历山大·蒲柏 人都会犯错.创建一个防止人们犯错的系统是不可能的.本章将介绍与人犯错有关的知识. 85.人总会犯错,没有完全的容错产品 要点: 1)应假设总会出错 很难创建一个不存在任何错误并且保证人们不会犯错的系统.设计一个容错系统的成本很高,而且你永远不会真正成功.(产品的快速迭代,不断修复错误) 2)最好的错误提示就是没有提示 也许错误提示是一台设备或软件系统中花费时间和精力最少的部分,也许这样做很合理.毕竟,最好的错误提示就是没有提示,这意味

js 高手进阶之路:underscore源码经典(二)

网址:http://web.jobbole.com/83872/ underscore 源码版本 1.8.2 起因 很多人向我推荐研究js,可以看看一些第三方js类库的源码,而源码之中最好解读也最简短的就是underscore,它也是我平常比较喜欢的一个库,因为它性价比高:体积小.能力强.打开一看,才1000多行,试着读了一下,确实很值得一看,所以对精彩部分做了一下整理. 闭包 整个函数在一个闭包中,避免污染全局变量.通过传入this(其实就是window对象)来改变函数的作用域.和jquery

人可以做自己的领导者。最好的领导者绝不是诸葛亮那样鞠躬尽瘁,而是司马懿那样耐得住寂寞,审时度势

1.工作很忙吗 朋友说,感觉压力很大,很想回老家.究其故,原来是工作非常努力,认真,尽责.手上做着好几个项目,每天要处理些琐碎的工作,还要每天处理跟领导.客户.下属的关系,感觉精疲力竭,非常疲惫.领导是个完美主义倾向的人,对工作要求也比较高.他很想趁年轻的时候多累积点资本,但是却感觉力不从心.我给他做了一段时间的咨询后,慢慢梳理出了这样一个思路:慢就是快. 想起了我曾经的一个领导就这样,很无奈的每天加班:你们这么不让我省心,我能怎么着. 说白了就是,知道如何停止的话,才能知道如何加速. 我很想说

全球化让大部分人受益,但是对少受损的人的帮助太少。《反全球化,特朗普崛起的土壤》。4星

<经济学人>的电子刊物<商论>的节选文章.基本都是8-10月刊上的,时效性还比较强.文章基本的特点是言简意赅,基本是观点的概括,没有特别详细的阐述. 本书基本的观点是:全球化对大部分人有益,但是发达国家确实有一些工人受损,目前政府对他们的帮助太少,另外发达国家的一些中产阶级在过去10多年来的收入几乎没有增长. 以下是书中一些信息的摘抄: 1:美国选民用选票表达了对体制的不信任与愤怒,因为他们认为这样的体制只会让一小批精英受益.#26 2:低收入人群的收入花在进口商品上的比例要远大于

大部分人努力程度之低,根本轮不到拼天赋 [转自w3cschool]

2014-05-31 w3cschool 在过去的三个多月里,每周六一天的心理咨询师的培训课成了我一周中最重要最开心的事情之一.因为国庆节的缘故,从9月中旬到10月中旬培训中心都没有安排课程,因此习惯每周六去上课的我在假期里反而一时颇为不习惯. 放假之前,我去另一个校区听了一次课,那个班比我所在的班级课程的进度快一些.课间听到那个头发半白的班主任讲话,班上的学生争相传阅一份成绩单,我才知道他们已经考过入门考了.班主任对学生说:"考试之前,我就有预测,那些每次上课都来的学生都会考过,那些每次来还坐

JS面向对象(3) -- Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法

相关链接: JS面向对象(1) -- 简介,入门,系统常用类,自定义类,constructor,typeof,instanceof,对象在内存中的表现形式 JS面向对象(2) -- this的使用,对象之间的赋值,for...in语句,delete使用,成员方法,json对象的使用,prototype的使用,原型继承与原型链 JS面向对象(3) -- Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法 1.Object类 在JS中,Object是所有类的基