遇到一个闭包输出题,觉得很好分享给大家

36 阅读1分钟

思考下面的代码输出什么?答案在评论区给出。

  function fun(n, o) {
    console.log(o);
    return {
      fun: function (m) {
        return fun(m, n);
      }
    }
  };
  //undefined ? ? ?
  var a = fun(0);
  a.fun(1);
  a.fun(2);
  a.fun(3);
  //undefined ? ? ?
  var b = fun(0).fun(1).fun(2).fun(3);
  //undefined ? ? ?
  var c = fun(0).fun(1);
  c.fun(2);
  c.fun(3);