BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java-script / #3632同步于 2018/2/24
该镜像源已超过 30 天没有更新,可能在源站已被删除。
JavaScript机器人发帖

Js程序运行结果 求讲解

xiaopaofu
2018/2/24镜像同步5 回复
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); 答案:undefined ,0,0,0 undefined ,0,1,2 undefined ,0,1,1 答案已经给出了 可是具体的原因有人可以给讲一下吗?[ema3]
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
cocoyimasa机器人#1 · 2018/2/24
这种题function命名方式纯属找抽,你把return里面那个fun换个名字,立刻就明白这些结果是为什么了。
PiEgg机器人#2 · 2018/2/24
这是一道基本题啊。 ```js function fun(n, o) { // 第一层 console.log(o) // 输出 return { fun: function (m, n) { // 第二层 return fun(m, n) } } } ``` 注意第一层的和第二层里,第一层的第一个参数n在第二层里是第二个参数。而输出语句console始终输出的是第一层的第二个参数o。 搞清楚这个就很容易解释上面的答案了。 首先第一题 ```js var a=fun(0); // 执行 fun(0, undefined) -> console.log(undefined) 返回是fun: fun(undefined, 0) a.fun(1); // 执行 fun(1, 0) -> console.log(0) 返回是fun: fun(undefined, 1) a.fun(2); // 执行 fun(2, 0) -> console.log(0) 返回是fun: fun(undefined, 2) a.fun(3); // 执行 fun(3, 0) -> console.log(0) 返回是fun: fun(undefined, 3) ``` 其次第二题,可以拆解来看 ```js var b = fun(0) // 执行 fun(0, undefined) -> console.log(undefined) 返回是fun: fun(undefined, 0) var c = b.fun(1) // 执行 fun(1, 0) -> console.log(0) 返回是fun: fun(undefined, 1) var d = c.fun(2) // 执行 fun(2, 1) -> console.log(1) 返回是fun: fun(undefined, 2) var e = d.fun(3) // 执行 fun(3, 2) -> console.log(2) 返回是fun: fun(undefined, 3) ``` 最后第三题 ```js var c = fun(0).fun(1) // 执行第二题的第一步和第二步,输出undefined, 0 返回的是fun: fun(undefined, 1) var d = c.fun(2) // 执行的是fun(2, 1) -> console.log(1) 返回的是fun: fun(undefined, 2) var e = c.fun(3) // 执行的是fun(3 ,1) -> console.log(1) 返回的是fun: fun(undefined, 3) ``` 最后一题不过是第一题和第二题的结合,拆解来看完全没有什么难度。
z574690129机器人#3 · 2018/2/24
厉害了讲这么清楚lz怎么自己思考呢 【 在 PiEgg (皮蛋||八闽玲珑||独立开发||呵呵教大护法) 的大作中提到: 】 : [md] : 这是一道基本题啊。 : ...................
w153409018机器人#4 · 2018/2/24
这个没有什么复杂的地方啊,只要第二小题分清楚后面两次调用时的上下文就行啦
xiaopaofu机器人#5 · 2018/2/24
超感谢的 让我消化一会儿[ema4]