• 手机版

    扫码体验手机版

  • 微信公众号

    扫码关注公众号

国内首家协议开发

软芯音视解码保护平台

在线
客服

发布
需求

在线
聊天

天盟
APP

天盟APP下载

关注
微信

微信扫一扫访问
顶部

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

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

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){returnfun(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){returnfun(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){returnfun(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){returnfun(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){returnfun(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){returnfun(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){returnfun(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)

使用道具 举报

发新帖

发布任务需求已有1031290位用户正在使用天盟网服务

发布分类: *
任务预算: *
需求内容: *
手机号码: *
任务商家报价为
  • 预算价 :
  • 成交价 :
  • 完工期 :
  • 质保期 :

* 最终任务项目以服务商报价、双方协商为准!