闭包的理解

2018-08-07  本文已影响0人  praycis
内部的函数被外部的变量所引用,就会形成闭包
function a() {
  var count = 100
  function b() {
    count++
    console.log(count)
  }
  return b
}

var num = a() 
num() //101
num() //102

在num = a()这里,其实是外部的num引用了a函数里的b函数,当a函数执行完成之后,会被立即销毁,但是这里把函数b返回给了外部的num变量,导致a函数无法销毁自身的作用域,只会自己执行完之后切断自身的关联。而这个作用域始终会被b函数借用。num()第一次执行的时候,b函数引用了a函数作用域中的count变量,这时,a的作用域中count的值就成了101。第二次执行的时候,count的值是101,自增完就变成102了。而一开始的100只是在a函数执行过程中留下来的局部变量,所以每次num执行。都会去找这个count。

上一篇下一篇

猜你喜欢

热点阅读