请解释如下代码的运行结果?
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);
首先,我们调用了 fun(0),输出了 0,返回了一个对象,该对象有一个 fun 方法,该方法接受一个参数 m,并调用 fun(m, n)。因此,我们可以连续调用 a.fun(1)、a.fun(2) 和 a.fun(3)。每次调用都会输出之前传递的 n,也就是 0,结果如下: 接下来,我们连续调用 fun(0).fun(1).fun(2).fun(3)。注意,每次调用 fun 方法都会返回一个对象,该对象有一个 fun 方法。因此,我们可以链式调用这些方法,结果如下: 最后,我们调用了 fun(0).fun(1),输出了 0,并返回一个对象,该对象有一个 fun 方法,可以连续调用 c.fun(2) 和 c.fun(3),结果如下: 因此,整个程序的输出结果为:
|