var fn;
 function foo() {  
 var a = 2;
     function baz() {
         console.log( a );
     }
     fn = baz; // assign baz to global variable
  }
 function bar() {
     fn(); // look ma, I saw closure!
  }
 foo();
 bar(); // 2

我不知道这段代码:首先,为什么作者必须将fn包装在一个调用fn(函数栏)的函数中,为什么不调用就像在“fn();”之类的全局范围之外,我是尝试它并导致相同的第二,它是一个将函数分配给变量的好方法吗?我认为它只能复制函数的结构并在变量中重构(这意味着它没有引用或根本无法记住第三,作者说只要有人使用那个环境关注的东西,引擎就会全部关闭,但是在这里,我只看到有一个任务,所以如果fn正在使用baz导致它是正确的foo到fn的环境的剩余?(这使得fn可以使用变量“a”)