JavaScript系列-闭包

206 阅读2分钟

面试了许多求职者,很多求职者只知其然,而不知所以然,写此文章为广大前端小伙伴指引迷津。纯干货!纯干货!纯干货!

目录

闭包

什么是闭包?

答:能够读取其它函数内部的变量。

闭包的作用?

答:实现数据私有。

闭包的实现原理?

答:正常函数执行完毕之后, 里面的变量会被垃圾回收机制处理掉, 但是闭包可以让函数作用域里面的变量, 在函数执行完毕之后依旧保持存在。

闭包的使用场景?

答:函数里面嵌套函数,防抖节流等;

闭包的弊端?

答:内存泄漏

闭包的笔试题?
for (var i = 0; i < 4; i++) {
  setTimeout(function() {
    console.log(i);
  }, 300);
}
答案:4444

for (var i = 0; i < 4; i++) {
  setTimeout(
    (function(i) {
      return function() {
        console.log(i);
      };
    })(i),
    300
  );
}
答案:0123
面试大白话

答:首先,闭包能够读取父函数的内部变量。其主要目的也是为了实现私有数据的存储。它的原理就是函数执行完毕之后,因为垃圾回收的特殊机制,可以让变量不会被销毁。我们项目里面一般就是用函数嵌套函数,像常用的键盘输入用的防抖函数,以及滚动时候触发的节流都有用到。不过闭包用的太多,会导致内存泄漏。

小白也是新手面试官,欢迎领导莅临指导工作,提出建议,小白不胜感激,不喜勿喷,点赞收藏随机送程序媛小姐姐一枚哦!!!