JS-闭包底层原理(面试)

1 篇文章 0 订阅

闭包底层原理


作用域

作用域分为全局作用域,函数作用域,块级作用域.
全局作用域在网页打开时创建,网页关闭时回收
函数作用域在函数执行时创建,函数执行结束后回收

预解析,预编译

预编译:var提升 之后进行函数提升

在函数执行前,会创建一个对象AO,也叫做执行期上下文,会将函数的形参和函数中声明的变量作为AO的属性,并赋值为undefined,之后将传递进来的实参给形参赋值,然后查找函数中是否有函数声明,如果有将声明的函数赋上函数体.

在全局作用域中也是,js预解析时会创建一个对象叫GO,将声明的变量作为GO属性,并赋值为undefined.查找全局作用于中是否有函数声明,赋上函数体.

闭包函数

发生在两个嵌套的函数中,内部嵌套的函数可以访问外部函数的变量

函数执行时开辟作用域,执行结束后回收,但是闭包函数却不会回收作用域,易发生内存泄漏

垃圾回收机制不会回收被别的作用域访问的变量

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值