JS系列:闭包作用域

本文深入探讨JavaScript中的闭包作用域,包括它的创建过程、执行上下文和作用域链查找机制。闭包提供了一种保护私有变量的机制,防止全局变量污染。同时,它能保存私有变量的状态,但过度使用可能导致内存溢出。在实际项目中,合理利用闭包可以避免代码冲突,提高代码质量。
摘要由CSDN通过智能技术生成

闭包作用域

1.创建函数

  • 开辟一个堆内存
  • 把函数体中的代码,当做字符串存储进去
  • 把堆内存的地址赋值给函数名/变量名
  • 函数在哪里创建的,那么它执行的时候所需要查找的上级作用域就是谁

2.函数执行

  • 形成一个全新的私有作用域,执行上下文,私有栈内存(执行一次形成一个,多个之间也不会有影响)
  • 形参赋值 & 变量提升
  • 代码执行(把所属堆内存中的代码字符串拿出来一行行执行)
  • 遇到一个变量,首先看它是否为私有变量(形参和在私有作用域中声明的变量是私有变量),是私有的操作自己的变量即可,不是私有的则向上级作用域中查找,一直找到全局作用域为止 = > 作用域链查找机制
  • 私有变量和外界的变量没有必然关系,可以理解为被私有栈内存保护起来了,这种机制其实就是闭包的保护机制
   var i =5;
   function fn(i){
   
       return function (n){
   
            console.log(n +(++i));
            
   }
}
var f = fn(1);
   f(2);
   f(3)(4);
   fn(5)fn(6);
   fn(7);
   console.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值