欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

函数的闭包

程序员文章站 2022-04-10 09:10:39
函数的执行空间会在函数执行完毕之后销毁但是,一旦函数内部返回了一个 引用数据类型,并且 在函数外部有变量接受 的情况下那么这个函数 执行空间 就不会销毁了function fn() { const obj = { name: 'Jack', age: 18, gender: '男' } return obj}const o = fn()闭包就是利用了这个函数执行空间不销毁的逻辑闭包概念1、有一个 A 函数,再 A 函数内部返回一个 B...

函数的执行空间会在函数执行完毕之后销毁

但是,一旦函数内部返回了一个 引用数据类型,并且 在函数外部有变量接受 的情况下

那么这个函数 执行空间 就不会销毁了

function fn() {
  const obj = {
      name: 'Jack',
      age: 18,
      gender: '男'
  }
  
  return obj
}

const o = fn()

闭包就是利用了这个函数执行空间不销毁的逻辑

闭包概念

1、有一个 A 函数,再 A 函数内部返回一个 B 函数;
2、再 A 函数外部有变量引用这个 B 函数;
3、B 函数内部访问着 A 函数内部的私有变量。
以上三个条件缺一不可

闭包的特点

为什么要叫做特点,就是因为他的每一个点都是优点同时也是缺点
1、作用域空间不销毁
优点: 因为不销毁,变量页不会销毁,增加了变量的生命周期
缺点: 因为不销毁,会一直占用内存,多了以后就会导致内存溢出
2、可以利用闭包访问再一个函数外部访问函数内部的变量
优点: 可以再函数外部访问内部数据
缺点: 必须要时刻保持引用,导致函数执行栈不被销毁
3、保护私有变量
优点: 可以把一些变量放在函数里面,不会污染全局
缺点: 要利用闭包函数才能访问,不是很方便

本文地址:https://blog.csdn.net/horizon12/article/details/109254405