【面试题 - 打印结果】function Foo() { var i = 0; return function () { document.write(i++); } } var

如下代码

function Foo() {
  var i = 0;
  return function () {
    document.write(i++);
  }
}
var f1 = Foo(),
  f2 = Foo();
f1();
f1();
f2();

这是一个闭包,闭包可以用在许多地方。它的最大用处有两个,一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。 这里的局部变量i,对f1()来说是全局变量,对f2()来说也是全局变量,但是f1()的i跟f2()的i又是相互独立相互不可见的,f1()每执行一次,f1()的i就加一,f2()每次执行一次,f2()的i就加油,但是相互之间不影响,因此结果是 010

你可能感兴趣的:(JavaScript,面试题,javascript,开发语言,ecmascript)