首页 > Web开发 > 详细

分享一道JS前端闭包面试题

时间:2016-03-01 14:23:21      阅读:157      评论:0      收藏:0      [点我收藏+]

输出以下代码的结果

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

解析:

代码转换一下:

 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);//undefined
11 a.fun(1);//0
12 a.fun(2);//0
13 a.fun(3);//0
14 
15 var b=_fun_(0).fun(1).fun(2).fun(3);
16 //undefined,0,1,2
17 
18 var c=fun(0).fun(1);//undefined,0,
19 c.fun(2);//1
20 c.fun(3); //1

 

分享一道JS前端闭包面试题

原文:http://www.cnblogs.com/phil_jing/p/5230666.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!