问答详情
源自:7-2 [JavaScript]作用域

为什么我拿到i了。。。

 <script>
  function test() {
   var i = 1;
   var func = new Function(document.write(i));
   func();
  }
  test();
 </script>


提问者:underwater 2017-01-24 02:44

个回答

  • 慕斯卡8874433
    2017-01-24 14:53:01
    已采纳

    这是闭包吧,func可以访问它上层函数的变量。

  • king0964
    2019-02-20 11:47:13

    格式问题,Function里面是字符串,要把var func = new Function(document.write(i));改为var func = new Function("document.write(i)");就能出来同样的结果;你这种写法应该相当于调用了window.document的方法,所以才能拿到i