面试了许多求职者,很多求职者只知其然,而不知所以然,写此文章为广大前端小伙伴指引迷津。纯干货!纯干货!纯干货!
目录
闭包
什么是闭包?
答:能够读取其它函数内部的变量。
闭包的作用?
答:实现数据私有。
闭包的实现原理?
答:正常函数执行完毕之后, 里面的变量会被垃圾回收机制处理掉, 但是闭包可以让函数作用域里面的变量, 在函数执行完毕之后依旧保持存在。
闭包的使用场景?
闭包的弊端?
答:内存泄漏
闭包的笔试题?
for (var i = 0; i < 4; i++) {
setTimeout(function() {
console.log(i);
}, 300);
}
答案:4,4,4,4
for (var i = 0; i < 4; i++) {
setTimeout(
(function(i) {
return function() {
console.log(i);
};
})(i),
300
);
}
答案:0,1,2,3
面试大白话
答:首先,闭包是能够读取父函数的内部变量。其主要目的也是为了实现私有数据的存储。它的原理就是函数执行完毕之后,因为垃圾回收的特殊机制,可以让变量不会被销毁。我们项目里面一般就是用函数嵌套函数,像常用的键盘输入用的防抖函数,以及滚动时候触发的节流都有用到。不过闭包用的太多,会导致内存泄漏。