前端经典必问面试题---谈谈对闭包的理解。

首先我们说说回答的方向

1.先回答闭包是什么
2.闭包怎么样
3.闭包怎么用
4.自己平时在公司里是怎么用的

那么接下来我们分4个模块去回答:

一、闭包是什么

闭包,在javascript高级程序设计中定义如下:

“闭包是有权访问其他函数作用域的局部变量的一个函数”

当然,我们还需要做到补充以下关于闭包的理解

在原生js中,函数中变量的作用域仅属于它所在的函数作用域,在函数执行完后将会被回收机制清理,内存也会被收回,但是我们如果在里面添加了一个闭包,那么通过闭包可以访问上级作用域的原因,即使上级函数执行完,作用域也不会销毁,在此处的子函数便是闭包,此时它具有了范文上级作用域的权限,即使上级函数执行完,上级函数的作用域也不会销毁。

二、闭包怎么样

在此处,我们应该从闭包解决了哪些问题,有什么有点和缺点来回答,阮一峰在b

在本质上,闭包就是将函数内部和外部连接起来的一座桥梁。

当然,我们也进行自己的补充

优点:闭包可以缓存上级作用域,因此就使得函数外部打破了“函数作用域”束缚,可以访问函数内部的变量。在之前项目中我们使用的AJAX请求成功后的回调函数就是闭包的应用,它正是利用了闭包的上述访问上级作用域的特性,在回调函数中就拥有了它的上级函数作用域的访问和操作能力,因此,我们便不需要使用钩子函数去操作上级函数作用域内部的变量了
一句话总结:闭包两个作用,一是读取函数内部的变量,二是让这些变量的值始终存在内存之中。

三、闭包的使用

接下来我们开始谈及闭包的具体使用场景了。

闭包在之前的项目中,最长使用的场景有1.Ajax请求成功的回调,在闭包中对上级函数作用域中请求到的数据的访问。


2.事件绑定的回调

你可能感兴趣的:(前端经典必问面试题---谈谈对闭包的理解。)