面试题:什么是闭包

比较好的答法:

1、讲讲这个技术

2、说说它的原理:它的好处   它的不好之处和代替方案

3、讲一讲个人更深的见解

1、闭包就是一个有作用域的代码块,比如一个全局函数或者一个事件的监听器或者一个回调函数或者一个函数内部返回值的函数都可以算是闭包(闭包就是能够读取其他函数内部变量的函数)

2、在前端开发中,闭包常常有一些使用场景

2.1   我们团队开发时  常常会写很多变量名  可能会出现变量重名导致业务冲突,为了解决这个问题

        可以使用闭包,利用闭包是一个有作用域的功能来,把每一个业务的代码写在闭包中,闭包声明在闭包内部,解决全局变量冲突问题

2.2  有时候代码块没有作用域  我们有一些频繁改变的变量,不能记录下它变化过程中的值,就可以使用闭包,函数内部每一次调用都会生成一个独立的AO对象

面试题:什么是闭包_第1张图片

2.3  一个函数内部如果有一些变量希望外部访问,但是不想外部直接操作:比如支付宝的余额 美团外卖,那么就可以让这个函数返回一个闭包,让这个闭包来操作这个函数内部的变量

3、但是闭包要想写项目用好也不是那么容易,因为有一些问题伴随着程序:

3.1  如果闭包没有使用好会导致循环引用  而引用数据在js引擎中是通过引用计数来销毁对象的

3.2  闭包会让我们代码变得复杂且难以维护

3.3  如果遇到了这种情况,可以换技术来实现

4、自己的见解

你可能感兴趣的:(面试题:什么是闭包)