关于 JS 闭包的一些疑问

var x = 100;  
var inc = function(){  
  var x = 0;
  return function(){
    console.log(x++);
  };
};

var inc1 = inc();  
var inc2 = inc();

inc1();  // -> 0  
inc1();  // -> 1  
inc2();  // -> 0  
inc1();  // -> 2  
inc2();  // -> 1  
x;       // -> 100 

如上代码中,inc1操作的变量x和inc2操作的变量x为什么不是同一个呢?望各位大神赐教

阅读 1.5k
1 个回答

为什么会是一个呢?
执行一次inc函数就是产生一个x的局部变量和一个匿名函数(引用着这个局部变量的)
inc1 和inc2引用的变量不一样的
inc1和inc2的引用也是不一样的,不行你看看inc1 == inc2

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题