js 闭包

  闭包是指有权访问另一个函数作用域中的变量的函数。

  创建闭包的常见方式,就是在一个函数内部创建另一个函数。

  在另一个函数内部定义的函数会将包含函数(即外部函数)的活动对象添加到它的作用域链中。(函数作用域链详见:函数的执行过程

  匿名函数从 createComparisonFunction() 中被返回后,它的作用域链被初始化为包含 createComparisonFunction() 函数的活动对象和全局变量对象。这样匿名函数就可以访问在 createComparisonFunction() 中定义的所有变量。

  更重要是, createComparisonFunction() 函数在执行完毕后,起活动对象也不会被销毁,因为匿名函数的作用域链仍然在引用这个活动对象。

  换句话说:当 createComparisonFunction() 函数返回后,其执行环境的作用域链会被销毁,但它的活动对象仍然会留在内存中,直到匿名函数被销毁后,createComparisonFunction() 的活动对象才会被销毁。

 

  闭包会携带包含它的函数的作用域,因此会比其他函数占用更多的内存。

 

posted @ 2021-03-26 15:25  名字不好起啊  阅读(51)  评论(0编辑  收藏  举报