闭包的底层理解

1:作用域链:

-作用域链会被保存到一个隐式属性中[[scope]]中,这个属性我们访问不到,但存在。它是让js引擎访问的,里面存储的就是作用域链AO GO. 也可以说AO和Go的集合

作用域链详解

 var global

        function a() {
            //    进来以后,首先看到的是a自己的ao,然后才是全局go
            function b() {
                //进来以后,首先看到的是b自己的ao,下部才是a的ao,然后才是全局go
                var bb = 123;
                aa = 0
            }
            var aa = 234
            b()
        }
        a() //执行完,a的ao到b的ao到全局的go的关联被斩断

复制代码

闭包底层原理

  //    闭包:内部函数被保存到外部
        function a() {
            var aa = 123

            function b() {
                var bb = 234
                console.log(aa);
            }
            return b
        }
        var res = a()
        res()
复制代码

当a执行完后,a与作用域链联系断裂,但是b此时没有与作用域链失联,他还是可以执行,可以看到a函数的ao。因为b函数出生的时候,a函数的ao就被b拿到了
b包底层原理.png

以上就是作用域链和闭包的底层原理,这篇文,稍稍用心都应该能看懂。不懂得请在评论里自由讨论。
关于闭包更多请关注下一篇

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享