js 闭包 学习笔记 原创王福朋,内附链接
作者:互联网
重点:
1. 函数作用域,要去创建这个函数的作用域取值,如果再次函数作用域找不到变量值,顺着原型链一级一级往上找是否存在该变量值
2.当一个函数被调用完成之后,其执行上下文环境将被销毁,其中的变量也会被同时销毁
3.函数可以创建一个独立的作用域
闭包的核心内容: 函数调用完成之后,执行上下文环境不会接着销毁,参考王福朋博客 链接
如图:
fn将返回值bar函数赋给了f1,调用f1函数,此时再bar函数内部访问到了本应该销毁的fn函数内部变量max,同时此时全局上下文环境中的max被赋值为“外部作用域下的变量max”
这个图的重点:
执行bar(15)时,max是自由变量,需要向创建bar函数的作用域中查找,找到了max的值为10。这个过程在作用域链一节已经讲过。
这里的重点就在于,创建bar函数是在执行fn()时创建的。fn()早就执行结束了,但是fn()执行上下文环境还存在与栈中,因此bar(15)时,max可以查找到。如果fn()上下文环境销毁了,那么max就找不到了。
使用闭包会增加内容开销,现在很明显了吧!
闭包和作用域、上下文环境有着密不可分的关系。
标签:闭包,王福朋,bar,函数,作用域,内附,max,上下文,fn 来源: https://www.cnblogs.com/everseventh/p/16470586.html