js中的函数与闭包的疑惑

新手上路,请多包涵
function create(){
    var a =1
    print('create:'+a)
    return function(){
        print(++a)
    }
}
var c = create()
c()
c()
var d = create()
d()
// 输出结果 1 2 3 1 2

我想知道的是,c在返回指向匿名函数指针的时候行成了一个闭包,d也是如此。c和d虽然是两个指向不同地址的函数,可我觉得他、们都会共享同一个create函数的成员变量a,可结果并不是如此,为什么呢
QQ截图20191205175217.png

阅读 1.3k
2 个回答
我觉得他们都会共享同一个create函数的成员变量a,可结果并不是如此,为什么呢

他们并不共享同一个 a 。每次调用 create ,都会生成一个新的 a

每次调用create函数时,重新申明了变量a,对变量a重新赋值为1了

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