zxdfe / FE-Interview

Every step counts
34 stars 1 forks source link

第8题:什么是闭包呀?它有什么作用?会造成什么问题?在哪些实际场景上有应用呢? #8

Open zxdfe opened 1 year ago

z-forever-y commented 1 year ago
闭包:内层函数引用外层函数变量的集合,闭包 = 内层函数 + 外层函数的变量
作用:1. 让外面的函数可以访问里面函数的变量        2. 实现数据的私有化
会造成的问题:内存泄漏
应用:节流和防抖
zxdfe commented 1 year ago

闭包

内层函数引用外层函数的变量的集合 ==> 闭包 = 内层函数 + 外层函数的变量。

MDN: 闭包(closure)是一个函数以及其捆绑的周边环境状态(lexical environment,词法环境)的引用的组合。

作用:

1.让外层函数访问内层函数的变量 2. 实现数据的私有化

会造成的问题:内存泄漏

应用场景

  1. 节流和防抖
  2. 实现柯里化(currying)函数
rupoly commented 1 year ago

闭包:内层函数+外层函数的变量的组合,且内层函数引用了外层函数的变量 作用:使外部访问内部函数的变量,也可以实现数据私有 会造成的问题:内存泄露 应用场景:防抖(throttle) 节流(debounce)

BlueSky-Engineer commented 1 year ago

闭包就是能够读取其他函数内部变量的函数,说白了闭包就是个函数,只不过是处于其他函数内部而已。 作用:访问函数内部的变量,防止函数的变量执行完成后,被销毁,使其一直保存在内存中 会造成“内存泄漏”的问题 应用场景:防抖、节流

lemon-912 commented 1 year ago

闭包的概念:一个函数对周围的状态进行捆绑,内存函数能访问到外层函数的作用域 简单记:内存函数+外层函数的变量 作用:实现变量私有化,外部可以访问内部的变量 缺点:造成内存泄露 应用场景:防抖 节流

Sophora77 commented 1 year ago

闭包就是内层函数引用外层函数的变量的集合,通过闭包,可以让外部访问到函数内部的变量,同时实现数据的私有化。闭包会产生内存泄漏的问题。应用场景有节流、防抖。

DengZhaoQuan commented 1 year ago

1. 闭包(Closure): 内层函数 + 外层函数变量的集合,并且内层函数引用了外层函数的变量。 2. 作用: 外部能够访问函数里声明的变量,同时实现数据的私有化。 3. 缺点: 会造成内存泄漏 4. 实际应用: 防抖、 节流。

xcop32221 commented 1 year ago

闭包clousure

也是一种作用域(scope)

定义:闭包是引用了另一个函数作用域变量的函数,通常在嵌套函数中实现

闭包=内层函数+外层函数的变量//绑定关系

原理:被引用的函数执行后的活动对象不会被立马销毁,因为去引用的函数的作用域链的活动对象始终引用着他,直到去引用他的函数被销毁才释放

条件:一般是用嵌套函数,外层函数返回闭包

  1. 要有内层函数
  2. 内层函数使用了外层函数的变量

    1. 所有函数都可以实现闭包

作用:

1.屏蔽垃圾回收机制对函数变量的执行(外层),使得函数变量的生命周期等于全局变量

2.让变量私有化

3.实际运用:防抖debounce,节流throttle

缺陷:造成内存泄露现象

WLNCJL commented 1 year ago
闭包 = 内层函数 + 外层函数的变量
首先要有内层函数,并且内层函数引用了外层函数的变量
能够让外部访问函数内部的变量,实现数据私有化
闭包会产生内存泄漏的问题
应用:防抖、节流
chenjiefe commented 1 year ago
stevenhuanghr commented 1 year ago

定义:内层函数和外层函数变量的集合 作用:通过闭包,外层可以访问函数内部变量,实现数据私有化。 缺陷:内存溢出 实际应用:防抖和节流

Qian-e commented 1 year ago

定义: 内层函数引用外层函数的变量的集合 ==> 闭包 = 内存函数 + 外层函数的变量 条件:

  1. 首先要有内层函数
  2. 内层函数使用了外层函数的变量 (外层函数就相当于把这个整体包裹起来了, 所以叫闭包)

作用:1. 让外层函数访问到内层函数的变量;2. 实现数据的私有化

闭包的实际应用 ---> 节流 throttle ---> 防抖 debounce

dyxfe commented 1 year ago
闭包:内层函数 + 外层函数的变量
首先需要有外层函数和内层函数
内层函数用到了外层函数的变量
就会形成闭包
作用:数据私有化,让外部能够访问到函数内部
问题:内存泄漏
应用:
1、防抖
2、节流
CDwenhuohuo commented 1 year ago

No description provided. 闭包:内层函数+外层函数变量 作用:使外层函数也访问到内层函数变量,封闭数据,实现数据私有化,避免全局污染 应用场景:节流防抖