为了账号安全,请及时绑定邮箱和手机立即绑定

闭包 运行结果,麻烦给出详解,谢谢!

闭包 运行结果,麻烦给出详解,谢谢!

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);var b = fun(0).fun(1).fun(2).fun(3);var c = fun(0).fun(1);  c.fun(2);  c.fun(3);//答案为//a: undefined,0,0,0//b: undefined,0,1,2//c: undefined,0,1,1
查看完整描述

1 回答

已采纳
?
stone310

TA贡献361条经验 获得超191个赞

var a = fun(0);  a.fun(1);  a.fun(2);  a.fun(3);

1、fun(0)时,第一个参数n为0,第二个参数o未设置,console.log(o)为undefined,return值为:

 {
    fun:function(m){
      return fun(m,n);   //n为0
    }

2、a.fun(1);m=1,代入上方return,得出新的return值为fun(1,0),执行得出console.log(0),return值为:

 //fun(1,0)return值为:
 {
    fun:function(m){     
      return fun(m,n);   //n为0
    }

3、a.fun(2);m=2,代入上方return,得出新的return值为fun(2,0),执行得出console.log(0),return值为:

 //fun(2,0)return值为:
 {
    fun:function(m){     
      return fun(m,n);   //n为0
    }

4、a.fun(3);m=3,代入上方return,得出新的return值为fun(3,0),执行得出console.log(0)

var b = fun(0).fun(1).fun(2).fun(3);

当执行到fun(0)时,与前面a一样,第二个参数未设置,console.log(o)为undefined;return值为:

 {
    fun:function(m){
      return fun(m,n);   //n为0
    }

当执行到fun(0).fun(1)时,m为1,代入上方return,得出新的return值为fun(1,0),执行fun(1,0),console.log(0),return值为:

   //fun(1,0)的return值为:
   {
    fun:function(m){
      return fun(m,n);  //n为1
    }

当执行到fun(0).fun(1).fun(2)时,m为2,代入上方return,得出新的return值为fun(2,1),执行fun(2,1),console.log(1),return值为:

   //fun(2,1)的return值为:
   {
    fun:function(m){
      return fun(m,n);  //n为2
    }

当执行到fun(0).fun(1).fun(2).fun(3)时,m为3,代入上方return,得出新的return值为fun(3,2),执行fun(3,2),console.log(2);

var c = fun(0).fun(1);  c.fun(2);  c.fun(3);

当fun(0)时,与前面b一致,undefined;

当fun(0).fun(1)时,与前面b一致,console.log(0);

c=fun(0).fun(1);return为:

   {
    fun:function(m){
      return fun(m,n);  //n为1
    }

因此c.fun(2)就是fun(0).fun(1).fun(2),与前面b一致,console.log(1);

因此c.fun(3)就是fun(0).fun(1).fun(3),m=3,代入上方return,得出新的retrun:fun(3,1);

得出结果console.log(1)


查看完整回答
2 反对 回复 2016-10-10
  • 1 回答
  • 0 关注
  • 2008 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信