javascript - 关于 JS 闭包的一些疑问

查看:61
本文介绍了javascript - 关于 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为什么不是同一个呢?望各位大神赐教

解决方案

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

这篇关于javascript - 关于 JS 闭包的一些疑问的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆