functionfun(n, o){
console.log(o)return{fun:function(m){returnfun(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);
输出结果:
undefined000undefined012undefined011
a就是是fun(0)返回的那个对象,也就是说,函数fun中参数 n 的值是0,而返回的那个对象中,需要一个参数n,而这个对象的作用域中没有n,它就继续沿着作用域向上一级的作用域中寻找n,最后在函数fun中找到了n,n的值是0