2022前端面经---(js高级)一文让你搞懂闭包

2023阿里云前端面经:从笔试到HR面的完整复盘与高频题解析 前端面试是技术深度与工程视野的综合较量,尤其对于云厂商这类底层技术团队,考察范围远超常规业务线。掌握JavaScript核心原理、浏览器渲染机制以及React等框架的底层设计,是应对多轮技术面的基础;而算法与数据结构则考验候选人的逻辑思维与编码功底,常以基础题加变体的形式出现。在云产品场景中,部署架构、高并发渲染、微前端拆分与性能监控等能力,直接体现了工程师解决实际问题的水平。面试不仅是知识点的问答,更是一次项目经验与稳定性思维的深度展示,每一轮追问都可能暴露知识盲区。本文基于2023年阿里云前端岗位的真实 阅读详情

优快云话题挑战赛第2期
参赛话题:面试宝典

✅ 作者简介:一名迈入大三的大学生,致力于提高前端开发能力
✨ 个人主页:前端小白在前进的主页
🔥 系列专栏 : 2022面经
⭐️ 个人社区 : 个人交流社区
🍀 学习格言: ☀️ 打不倒你的会使你更强!☀️

🔥前言

在面试过程中js高级的闭包是面试官必问的问题,有好多小伙伴们对闭包都不理解,感觉这些东西生硬晦涩,在开发过程中没有很好的应用,这篇文章将带领大家彻底搞懂闭包,并且了解闭包的应用场景

面试题

面试题:

请你说详细说明一下js中什么是闭包

问题剖析:

本题就是考察你对闭包是否有一个熟练的掌握,这个问题你必须要知道闭包的概念,以及怎么去实现闭包,同时你要懂得js中的垃圾回收机制。

问题解答:

什么是js垃圾回收机制(前提)

垃圾回收机制(GC:Garbage Collection):执行环境负责管理代码执行过程中使用的内存。JS的垃圾回收机制是为了以防内存泄漏,内存泄漏的含义就是当已经不需要某块内存时这块内存还存在着,没有被释放,导致该内存无法被使用,垃圾回收机制就是间歇的不定期的寻找到不再使用的变量,并释放掉它们所指向的内存。
概念出自于文章JavaScript垃圾回收机制

其实我们通俗的解释就是:js存在专门的机制去处理我们不用的一些东西,不论是简单数据类型还是复杂数据类型。

简单举例:var a =1,我们定义了变量a,并且给它赋值为1,随后我们去改变a的值,a = 100,现在的话我们知道a的值变成了100,那么数值1我们肯定就不会用到了,那么js的垃圾回收机制会帮助我们把数值1给回收了,为了避免内存泄漏!

闭包

  • 闭包的概念
    • 闭包(closure):函数内部返回一个函数,这个内部函数被外界所引用,这个内部函数就不会被js回收机制所销毁,内部函数所用到的外部函数的变量也不会被销毁。
    • 代码示例:
      function outer() {
           let name = 'james'
           let age = 37
           return function() {
               return name + ' is superstar';
           }
       }
       let func = outer()
       console.log(func()); //james is superstar
      
    • 代码解析:

      在上方代码中我们定义了一个外部函数outer(),在外部函数内部返回了一个函数(内部函数),随后在外界中将外部函数赋给了func,这个func就是内部函数,然后执行func(),打印出来了相应的结果,在这里,我们使用了外部函数内定义的属性name和内部函数,所以name和内部函数不会被js回收机制所处理,但是属性age我们并没有使用,所以age被js垃圾回收机制所回收!

  • 优点和缺点
    • 在代码解析中,我们知道了 我们所创建的临时变量name将不会被回收,所以闭包的优点就是:让临时变量可以永驻内存。
    • 但是如果我们不停的执行func,那么就会出问题,这样的话会使内存中不断的储存临时变量,就会导致内存泄漏,所以闭包的缺点就是:会造成内存泄漏。
  • 项目场景

在上面我们知道了什么是闭包,但是只知道闭包不知道咋用,未免有点难受,在这里说一个场景,就是防抖和节流

代码示例:

  1. 在这里写一个搜索框,搜索框的内容输入频次可以使用防抖或节流来优化。

        <input type="text" id="search">
    
  2. 闭包防抖

    search.oninput = (function() {
    let timer = null
    return ()=>{
     if(timer) {
        clearTimeout(timer)
     }
      timer = setTimeout(()=>{
         console.log('发送了ajax请求');
      },500)
    }
    })()
    
  3. 闭包节流

    search.oninput = (function(){
            let flag=true
            return ()=>{
                if(flag) {
                    setTimeout(()=>{
                        console.log('发送了ajax请求');
                        flag = true
                    },500)
                }
                flag = false
            }
        })()
    

闭包的实战常见场景主要是在防抖和节流中,就是为了防止在防抖和节流中我们创建的临时变量会丢失!

个人总结

闭包是js高级中一个重要的知识点,闭包的存在就是为了进行一些项目的优化,可能在日常开发中小伙伴们使用不到,但是一旦开发项目对所有的细节把控都会十分的到位,那么闭包是必用的一个小细节,还是希望大家能够好好钻研一下闭包,祝大家面试成功!😉😉

2021年:金三银四最强悍的 js 面试题 实现迷你 Vue 框架 如何实现 MVVM 类 Vue 迷你框架(一) 如何实现 MVVM 类 Vue 迷你框架(二) 如何实现 MVVM 类 Vue 迷你框架(三) 如何实现 MVVM 类 Vue 迷你框架(四) 如何实现 MVVM 类 Vue 迷你框架(五) 如何实现 MVVM 类 Vue 迷你框架(七) 如何实现 MVVM 类 Vue 迷你框架(八) MVVM 类 Vue 迷你框架(完结撒花) 前端路由 前端路由-0.md 前端路由-1.md 前端路由-2.md 前端路由-3.md 前端路由-4 阅读详情

相关推荐

嵌入式开发实战:如何用cJSON库在STM32上实现轻量级JSON通信(附完整代码)

本文详细介绍了如何在STM32嵌入式系统中使用cJSON库实现高效的JSON通信方案。针对嵌入式环境的内存限制,提供了内存优化策略、cJSON库的深度定制方法以及完整的通信流程实现代码,帮助开发者解决JSON解析效率低下和跨平台兼容性等核心挑战。

star5的专栏 471

JS面试---闭包

适合刚刚接触闭包的小哥哥小姐姐

weixin_58257357的博客 3641

(三) Debian 安装linuxcnc-ethercat中间件

1.在这里同样的也是需要下载一下依赖包 sudo apt install linuxcnc-uspace-dev 2.依赖包安装完成, 接着执行下面命令 sudo git clone https://github.com/sittner/linuxcnc-ethercat 还是可能出现下载网络错误下载不成功,可以直接下载我已上传百度云linuxcnc目录下 注意一下,后面make可能会出现头文件(xxx.h)的报错提示,在这里给大家一个处理办法 用aptitude 工具可以搞定 sudo apt-get

qq_30065813的博客 828

js 闭包

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34148508的博客 325

FOC观测器之龙伯格观测器

状态观测器: 理论依据:根据控制理论,如果一个系统能够完全通过其检测到的输出值来重构其系统状态,则认为该系统是可观测的。其作用于无传感器转子的位置和速度的检测反馈,再作用到PARK逆变换和转矩磁链控制上。 Luenberger观察器原理图: Luenberger观测器的离散化: (其观测器的闭环参数为经验验证值) 引入估测电流( iα,iβ )的反馈值并离散化(T 为采样时间),可得...

ShawnChan的博客 2万+

一个 ABAP 工具,能打印系统里某个用户对 BSP 应用的浏览历史记录

只要一个用户在 SAP ABAP 系统里浏览过 BSP 页面,会留下浏览历史记录。本工具会解析出这些记录,打印出该用户浏览的历史事件,和浏览过的页面名称。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 546

面试中如何回答闭包问题

面试中的闭包问题

qq_38868959的博客 2054

【毕设实战】飞行器目标识别系统:基于YOLOv5的智能检测全流程教程,助你毕设脱颖而出

本文介绍了一个基于YOLOv5的飞行器目标识别系统的开发过程。系统包含数据采集与标注、模型训练、实时检测和UI界面四大模块。文章详细讲解了从环境搭建、数据标注到YOLOv5模型训练的全流程,包括如何划分数据集、配置参数和测试模型性能。同时提供了实时检测代码示例和UI界面开发思路,使读者能够快速实现一个完整的智能检测系统。该系统可应用于军事侦察、民用巡检等领域,具有较高的实用价值,适合作为计算机视觉相关的毕业设计项目。

FJN110的博客 108

js面试题之闭包

一、什么是闭包? 前言 百度百科定义:闭包就是能够读取其他函数内部变量的函数。 创建闭包的通常方式,是在一个函数内部创建另一个函数 在解释之前,得先讲讲作用域。先来看下面这个示例: var a = 1; function f(){ var b = 2; console.log(a) // 1 } console.log(b) // undefined 示例中包含了两种作用域,一种是属...

weixin_43964148的博客 6987

SimSwap复现指引及代码分析【2023有更新】

我的环境!!!😚😚😚 之后会遇到:还会遇到至此环境配置完毕!下面是所需要的checkpoint。至此环境准备结束。先试试环境是否有问题,图片是代码包中给的。我用的是512的checkpoint,无水印,a是源脸,b是目标脸。输出到./output/result_whole_swapsingle.jpg 如图是可以成功换脸的:(为了方便查看将图像裁剪到了128x128) 表示图像预处理,相应的改为也是一样。不加就是对已经面部对齐的图像进行简单的面部交换。 加上就是无水印。 交换一张图片中的所有面孔。

zik的博客 2047

Vue3 + uniapp 踩坑:iOS 真机调试一直报错Maximum call stack size exceeded,和(in promise)MiniProgramError err的解决方法

不是你写错代码,是微信开发工具和 iOS 真机调试的兼容问题。开个空项目都报错,勾个设置就没问题,不是你,是工具的锅。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1267

javaScript基础面试题 ---闭包

闭包

weixin_43850639的博客 1726

C#身份验证黑科技:用量子级加密与多维防御矩阵构建坚不可摧的用户管理系统!

某金融系统因身份验证漏洞导致200万用户数据泄露,量子级防御可将攻击面缩小99.99%。

墨夶的博客 353

前端面经---(js高级)一文让你搞懂闭包

在上方代码中我们定义了一个外部函数outer(),在外部函数内部返回了一个函数(内部函数),随后在外界中将外部函数赋给了func,这个func就是内部函数,然后执行func(),打印出来了相应的结果,在这里,我们使用了外部函数内定义的属性name和内部函数,所以name和内部函数不会被js回收机制所处理,但是属性age我们并没有使用,所以age被js垃圾回收机制所回收!在代码解析中,我们知道了 我们所创建的临时变量name将不会被回收,所以闭包的优点就是:让临时变量可以永驻内存。

砖业二十年 126

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

2024前端面经(2)

flex-wrapflex-flowjustify-contentalign-itemsalign-content2-1. flex-direction: 决定主轴的方向(即项目的排列方向.container {flex-direction: row | row-reverse | column | column-reverse;}row:默认值-主轴为水平方向,起点在左端row-reverse:主轴为水平方向,起点在右端column:主轴为垂直方向,起点在上沿column-reverse:主轴为垂直方向,

2401_83703835的博客 930

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

前端面试八股文怎么学?从闭包到事件循环的进阶指南

在前端开发与JavaScript的学习路径中,基础知识始终是衡量工程师水平的核心标尺。闭包、事件循环、跨域与响应式原理等概念,常常被视为面试中的“八股文”,但它们的本质是高度压缩的知识索引——每一个考点背后都串联着作用域链、异步机制、浏览器渲染与框架设计思想。理解这些概念的基本原理,不仅有助于应对面试追问,更能转化为排查线上问题、优化项目架构的工程能力。从浏览器的事件循环调度到Vue的依赖收集,从跨域方案选型到异步Bug定位,扎实的基础知识始终是技术价值落地的前提。本文结合经典面试题与真实项目场景,为你梳理

weixin_28077113的博客 311

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

来吧!一文写清前端面试难点及考点

如果你现在准备开始找前端工作的话,那么面试是一个很重要的环节。接下里我会具体讲一下我是怎么准备面试及刷面试题。满满的干货,建议精读! 搭配这两篇看面试效果更好哦~ 285页解析百度、阿里、腾讯前端面试题,通关秘籍请收好! 分享三个前端学习方法、十项前端面试笔记:养精蓄锐,为想去的公司努力一把 怎么准备前端面试 面试总结下来以下四点:一基础,二项目,三简历,四心态 基础 首先是基础,那么到底是什么样的基础呢?小伙伴们可以参考以下总结的几个要点 对于图做些讲解说明,有个大致的学习方向 1.html: 知道

weixin_52546522的博客 4577

手写new/call/apply/bind:彻底搞懂JavaScript this与函数实现

在JavaScript中,函数调用时的this指向一直是理解语言底层逻辑的核心,也是前端面试中高频考察的基础能力。围绕this的四种绑定规则与原型链机制,call和apply通过临时挂载函数实现显式绑定,bind则利用闭包延迟执行并支持参数预设,而new操作符则通过创建对象与原型关联完成构造流程。掌握这些底层原理,不仅能帮助开发者排查this丢失、异常返回值等实际问题,还能在事件绑定、定时器回调、类数组转换及函数柯里化等场景中写出更健壮的代码。理解这些机制,也是阅读框架源码和实现复杂公共库的必备功底。最终,

weixin_30680385的博客 369

剑指 offer —— js闭包面试通杀秘籍,京东面试题2024

跳槽是每个人的职业生涯中都要经历的过程,不论你是搜索到的这篇文章还是无意中浏览到的这篇文章,希望你没有白白浪费停留在这里的时间,能给你接下来或者以后的笔试面试带来一些帮助。也许是互联网未来10年中最好的一年。但是如果你不真正的自己去尝试尝试,你永远不知道市面上的行情如何。这次找工作下来,我自身感觉市场并没有那么可怕,也拿到了几个大厂的offer。在此进行一个总结,给自己,也希望能帮助到需要的同学。

m0_60721823的博客 381

2024年Web前端最全8年web前端开发经验者告诉你如何零基础学习web前端,2024年最新2024年最新腾讯前端面经

Web开发基础中的基础,HTML是负责网页结构,CSS负责网页样式,JS则负责逻辑交互。前两者更像是标记语言,没有什么逻辑,JS才是前端的重中之重。随着web前端的飞速发展,学习web前端的人员也是越来越多,在移动 互联网 时代,相信我们每个人的手机上都装有数十个APP,这些APP的开发其实也和当下热门的 Web 前端开发息息相关。每个人学习进度可能不同,这个阶段主要是多仿站,熟悉基础,试试用CSS写响应式页面,了解JS深入性的知识,比如原型链、闭包、 设计模式 等需要更多的积累,逐渐理解并实践掌握。

2401_84419009的博客 330

2021前端面试经常被问到的题(附答案)

一、html 二、css 1.50道 CSS 基础面试题(附答案) 50道 CSS 基础面试题(附答案) 2.如何居中div? CSS水平居中+垂直居中+水平/垂直居中的方法总结 3. CSS3新特性 深入了解 CSS3 新特性 4.清除浮动 清除浮动的四种方式及其原理理解 5.media媒体查询 深入浅出篇 — media媒体查询 - 响应式开发必备 6.讲一讲Flex布局,以及常用的属性? 一...

xieanna123的博客 13万+

最全BAT前端开发面试80题:算法+html+js+css!含答案大赠送!

最全前端开发面试题目:包含算法+网络+css面试+js+h5面试题目,尾部有最全BAT前端面试经典77题和答案,想要的就快来领走吧~(领取方式见文末) 一、前端算法面试 1、基本排序的方式 冒泡、快排、桶排、堆排序、归并排序、插入排序。 基本也就这些吧。最重要的还是快排和插入排序和堆排序。自己多写几次,有递归形式的再好好看一下使用循环形式达到结果的形式,基本也就没什么问题了。 2、二分搜索等。 3、二叉树遍历相关。 例如前序遍历中序遍历后序遍历等,深度优先搜索...

一个有情怀的程序猿博客 458

当我不停参加Web前端面试,就会发现一个定律...

突出优化成果:用数据说话,比如“通过懒加载+代码分割的优化,首屏加载时间从4s提升到1.5s,Lighthouse评分提升30%”,-准备案例复盘:挑一个复杂问题,比如“白屏问题的排查过程”,从现象、原因到解决方案,完整梳理清楚。-理清核心概念:讲透闭包的内存泄漏场景、this指向的多种绑定规则,以及深浅拷贝的具体实现,问题凸显:对前端工程化的整体链路理解零散,面对性能瓶颈时,没思路、没体系,不会设计解决方案。这不我把面试常问的项目场景题都整理出来了,可以直接拿去背:​​​​​​​。

2401_86373285的博客 1350

前端面试汇总

1. 对象深拷贝 var symbol = Symbol(1); var symbol2 = Symbol(1); var o1 = { p1: "p1", [symbol]: "symbol1", [symbol2]: "symbol2" }; var o2 = { o1, a1: [o1, null] }; console.log(o1); console.log(Object.keys(o1)); console.log(Object.getOwnPropertySymbols(o1)); con

永生天地 453

2024年2024前端面试经常被问到的题(附答案)_前端面试题,面试web前端开发自我介绍怎么写

由于篇幅限制,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】由于篇幅限制,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

2301_82243710的博客 1099
上一篇: 【node进阶】深度解析之Express框架入门
下一篇: 【node进阶】深度解析Express框架--路由、中间件
AI全栈研习社
AI全栈研习社 优质创作者: 编程框架技术领域 优质创作者: 编程框架技术领域
博客等级 码龄6年 2万+粉丝 192原创
评论 83
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI全栈研习社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值