位置: IT常识 - 正文

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

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

推荐整理分享2022前端面经---(js高级)一文让你搞懂闭包(2020年前端面试),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:2021前端面试题目100及最佳答案,2020前端面试题及答案,2019前端面试,2021前端面试题目100及最佳答案,2020年前端面试,2021前端面试宝典,2021前端面试最新笔试题,2021前端面试宝典,内容如对您有帮助,希望把文章链接给更多的朋友!

CSDN话题挑战赛第2期 参赛话题:面试宝典

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

🔥前言

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

📃目录 面试题什么是js垃圾回收机制(前提)闭包个人总结面试题

面试题:

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

问题剖析:

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

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

问题解答:

什么是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,那么就会出问题,这样的话会使内存中不断的储存临时变量,就会导致内存泄漏,所以闭包的缺点就是:会造成内存泄漏。项目场景

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

代码示例:

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

<input type="text" id="search">

闭包防抖

search.oninput = (function() {let timer = nullreturn ()=>{ if(timer) { clearTimeout(timer) } timer = setTimeout(()=>{ console.log('发送了ajax请求'); },500)}})()

闭包节流

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

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

个人总结

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

本文链接地址:https://www.jiuchutong.com/zhishi/298495.html 转载请保留说明!

上一篇:程序员未来是不是会大量失业?(程序员未来会失业吗)

下一篇:YOLO系列算法(yolo系列算法全家桶)

  • 打开论坛发帖五大问题的钥匙来了。。。(打开论坛app)

    打开论坛发帖五大问题的钥匙来了。。。(打开论坛app)

  •  抖音如何后半段加音乐(抖音后半部分怎么变慢)

    抖音如何后半段加音乐(抖音后半部分怎么变慢)

  • iphonex快充多少w(iphonex快充用多少w的)

    iphonex快充多少w(iphonex快充用多少w的)

  • 华为mate30怎么开通语音控制(华为mate30怎么开小窗)

    华为mate30怎么开通语音控制(华为mate30怎么开小窗)

  • 微信号只能是英文和数字吗(微信账号可以纯英文吗)

    微信号只能是英文和数字吗(微信账号可以纯英文吗)

  • 华为p30锁屏时间怎么移动到下方(华为P30锁屏时间位置怎么移动)

    华为p30锁屏时间怎么移动到下方(华为P30锁屏时间位置怎么移动)

  • 红米手机有反应但屏幕不亮(红米手机有反应但屏幕黑屏舞)

    红米手机有反应但屏幕不亮(红米手机有反应但屏幕黑屏舞)

  • 打印机e1是什么故障(打印机出现e1打印不了怎么解决)

    打印机e1是什么故障(打印机出现e1打印不了怎么解决)

  • 小米录音权限被禁止(小米录音权限开了却说被禁止了)

    小米录音权限被禁止(小米录音权限开了却说被禁止了)

  • 快手怎么播放电影(快手怎么播放电影放映厅)

    快手怎么播放电影(快手怎么播放电影放映厅)

  • 微信勿扰模式不见了(微信勿扰模式不拉黑)

    微信勿扰模式不见了(微信勿扰模式不拉黑)

  • realme Q超广角怎么开(realmeq超广角怎么开)

    realme Q超广角怎么开(realmeq超广角怎么开)

  • 苹果11的耳机是那种(苹果11的耳机是蓝牙的吗)

    苹果11的耳机是那种(苹果11的耳机是蓝牙的吗)

  • 笔记本可以加几个内存条(笔记本可以加几张内存条)

    笔记本可以加几个内存条(笔记本可以加几张内存条)

  • 淘宝活动正向和反向的区别(淘宝活动正向和负向区别)

    淘宝活动正向和反向的区别(淘宝活动正向和负向区别)

  • 手机淘宝信誉评级在哪里看(手机淘宝信誉评分怎么看)

    手机淘宝信誉评级在哪里看(手机淘宝信誉评分怎么看)

  • 12磅宋体在哪设置(word12磅宋体要怎么设置)

    12磅宋体在哪设置(word12磅宋体要怎么设置)

  • iphonex在哪里设置全屏(苹果x在哪里设置)

    iphonex在哪里设置全屏(苹果x在哪里设置)

  • 一闪怎么添加音乐(一闪怎么加录音)

    一闪怎么添加音乐(一闪怎么加录音)

  • ipada1954是几代(ipada1954是2018款么)

    ipada1954是几代(ipada1954是2018款么)

  • 快手发出去别人看不到(快手别人发作品我怎么能收到通知)

    快手发出去别人看不到(快手别人发作品我怎么能收到通知)

  • 完美解决 Linux 和 Windows 双启动带来的时间同步问题(完美解决怠速抖动加油就平稳)

    完美解决 Linux 和 Windows 双启动带来的时间同步问题(完美解决怠速抖动加油就平稳)

  • vue打包之后,可以进行修改配置后端地址、端口等信息方法(vue打包注意事项)

    vue打包之后,可以进行修改配置后端地址、端口等信息方法(vue打包注意事项)

  • H5页面跳转小程序的三种方式(h5页面跳转小程序不显示按钮)

    H5页面跳转小程序的三种方式(h5页面跳转小程序不显示按钮)

  • 增值税发票税控开票软件怎么下载
  • 个人所得税财产租赁所得税率表
  • 可回收再生资源有哪些
  • 两处工资薪金所得
  • 应纳税所得额可以扣除哪些
  • 分公司不独立核算怎么做账
  • 先报税还是先清卡反写
  • 招标代理服务费由谁支付
  • 物业代收费:有关法律
  • 向职工支付职工福利费
  • 货币资金包括应收票据和应收账款吗
  • 当期免抵税额有什么用
  • 计提坏账递延所得税资产怎么算
  • 本月开的发票次月预缴如何做会计分录呢?
  • 开过的增值税发票丢失
  • 目前建筑里面税金总共包括几部分
  • 上月开的红字发票本月可以作废吗
  • 冲抵货款销售返利会计分录怎么写?
  • 火车票飞机票进项税额怎么抵扣
  • 个税系统添加单位企业信息不存在
  • 长期股权投资和资本公积关系
  • mac auto tune
  • 应届生能参考注册公司吗
  • macOS 11 Big Sur beta 4值得升级吗?macOS 11 Big Sur beta 4更新详解
  • 怎么在bios里设置usb开关
  • 旧房转让土地增值税计算案例
  • 缴纳住房公积金分录
  • 对公账户转私人账户有限额吗
  • fodhelper.exe是什么程序
  • 如何清理电脑浏览器
  • 培养自己的php编程能力
  • php+jQuery+Ajax实现点赞效果的方法(附源码下载)
  • 商品流通企业会计分录
  • 甲产品生产耗用a材料10000千克,单位成本
  • yii框架运行原理
  • 职工意外保险比例
  • cqi映射表
  • php时间转换成时间戳
  • 2022年 change detection遥感图像变化检测 论文附代码
  • js怎样遍历对象中的每个元素
  • groupdel命令详解
  • 损益类所得税费用
  • 计提的费用收到增值税专票
  • ubuntu下mysql版本升级到5.7
  • 个人所得税两处或两处以上工资、薪金所得纳税申报表
  • 发票网上申领需要多长时间
  • 一般纳税人的账户可以随便转账到私人账户吗
  • 家具厂成本
  • 主营业务成本包括哪些
  • 如何查询工商局每天入驻情况
  • 机构信用代码证在哪里办理
  • 电影院租金
  • 当月只有进项税额会计怎么做账
  • 资金信息综合服务
  • 行政事业单位的营业执照叫什么
  • 注册资本未到位注销公司处理
  • 建筑公司脚手架租赁费会计分录
  • 自产货物用于在建工程账务处理
  • 车票抵扣进项税怎么计算
  • sql解析原理
  • sql语句学习
  • 启动mysql1067错误
  • sqlserver exists,not exists的用法
  • win8.1应用商店还能用吗
  • mac电脑拷贝文件在哪里
  • 在64位的Ubuntu系统上安装32位的WPS的方法
  • window10电话
  • win10如何彻底关掉自动锁屏
  • 百度贴吧上传图片大小
  • js获取对象key的方式有哪些
  • jquery事件的响应
  • 全面解析A型天秤座男
  • shell脚本编程实例
  • 深入浅出nginx实战
  • java教程 视
  • 税务部门督查内审部门监督检查的内容
  • 哈尔滨出租车可以拼车吗
  • 江苏国税电子税务局网上申报流程
  • 税务局三方协议变更
  • 公共基础设施项目所得税优惠目录
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设