分享一道JS前端闭包面试题
输出以下代码的结果
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
本文为Phil Jing原创文章,未经博主允许不得转载,如有问题请直接回复或者加群。