闭包/执行空间

一、闭包:

        闭包是函数程序的一种 高等级应用方法,目的是操作调用函数中的数据。

        原因:为了保护数据的安全性,防止全局变量污染数据,将 变量,数据等定义在函数中,将数据,变量变成局部作用域变量,其他函数就不能直接操作改变这个变量。

二、执行空间

1、函数

        (1)、函数的封装

                a:在堆中开辟一个独立的存储空间, windows操作系统会给存储空间定义内存地址,准备存储函数程序

                b:将函数程序以字符串形式 存储在 存储空间中

                c:将内存地址 存储在 变量/函数名称中,变量/函数名称存储在栈中

        (2)、函数的调用

                a:从栈中 获取变量/函数名称 读取其中存储的内存地址,按照内存地址找到堆中的存储空间,读取存储空间中存储的函数程序

                b:函数的形参赋值实参

                c:预解析/预编译/预解释 函数中的程序代码

                d:执行函数程序

                        i  函数程序的形参、变量、数据等存储在执行空间中。执行函数是在函数的存储空间中 再开辟一个独立的内存空间,存储这个函数的形参、变量、数据等,这个专门存储函数的空间,称为执行空间。

                        ii 在函数程序执行的过程中,执行空间是存在的,函数的所有数据 都存储在执行空间中

                        iii 函数执行结束,函数的执行空间被销毁/释放,执行空间中存储的数据也会被 销毁/释放,这个过程称为JavaScript程序 内存/数据的回收机制,目的是为了节约内容,提高程序的执行效率

2、生成不被销毁的执行空间

        核心原理:在外界使用函数内部的数据,数据正在被使用,执行空间就不会被销毁

        具体方法:用return返回 应用数据类型,在函数之外用变量存储函数的返回值

function fun1(){

        return 100;

}

var res1=fun1();

//res1中存储的是基本数据类型数值100

//存储之后和函数就没有任何联系啦

        

function fun2(){

        return [1,2,3,4,5];

var res2=fun2();

//res2中存储的是 函数fun2的返回值

//也就是数组的内存地址

//res2和函数的return值相互关联

//此时函数的执行空间不会被销毁

//函数的数据数值就会一直存在

三、闭包的基本语法形式

        1、有一个函数A 存储 数据数值,这个数据数值就是被保护的全局变量数据

        2、函数A的 返回值 是一个匿名函数,这个函数的作用就是操作 被保护的全局变量数据

        3、在函数A外有一个变量存储函数A的执行结果返回值,也就是存储return的匿名函数

        4、调用执行变量,就是在调用执行匿名函数,也就是在调用操作全局变量数据 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值