位置: 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系列算法全家桶)

  • 微信公众号好处有哪些呢(微信公众号的好处有哪些)

    微信公众号好处有哪些呢(微信公众号的好处有哪些)

  • 电脑老是自动关机怎么办(电脑老是自动关机怎么解决)

    电脑老是自动关机怎么办(电脑老是自动关机怎么解决)

  • Redmi Note 9 Pro Max的像素是多少

    Redmi Note 9 Pro Max的像素是多少

  • 小米四手环触摸不灵(小米手环触摸不亮什么原因)

    小米四手环触摸不灵(小米手环触摸不亮什么原因)

  • 华为出现绿框下拉不动怎么办(华为出现绿框下载怎么办)

    华为出现绿框下拉不动怎么办(华为出现绿框下载怎么办)

  • 一对一红包怎么超过200(一对一红包最多能发多少)

    一对一红包怎么超过200(一对一红包最多能发多少)

  • 钉钉如何关闭发现圈子(钉钉如何关闭发起的在线课堂)

    钉钉如何关闭发现圈子(钉钉如何关闭发起的在线课堂)

  • 路由器插上网线就可以用了吗(路由器插上网线怎么设置)

    路由器插上网线就可以用了吗(路由器插上网线怎么设置)

  • 苹果内存可以扩大吗(苹果内存扩容是什么意思)

    苹果内存可以扩大吗(苹果内存扩容是什么意思)

  • 天翼网关是路由器吗(天翼网关路由器密码怎么改)

    天翼网关是路由器吗(天翼网关路由器密码怎么改)

  • 华为一碰传支持小米吗(华为一碰传支持的机型)

    华为一碰传支持小米吗(华为一碰传支持的机型)

  • 苹果手机收款语音播报怎么设置(苹果手机收款语音)

    苹果手机收款语音播报怎么设置(苹果手机收款语音)

  • 亲情账户能互相查吗(亲情账户可以互相买单吗)

    亲情账户能互相查吗(亲情账户可以互相买单吗)

  • word添加黄色底纹(word2010添加黄色底纹)

    word添加黄色底纹(word2010添加黄色底纹)

  • 华为40w可以给小米充电么(华为40w可以给小米33w)

    华为40w可以给小米充电么(华为40w可以给小米33w)

  • 抖音取消关注对方知道吗(抖音取消关注对方还能看到我视频)

    抖音取消关注对方知道吗(抖音取消关注对方还能看到我视频)

  • 小米手机msa是什么(miuimsa是什么意思)

    小米手机msa是什么(miuimsa是什么意思)

  • qq闪照怎么发 安卓(qq闪照怎么发 安卓手机上)

    qq闪照怎么发 安卓(qq闪照怎么发 安卓手机上)

  • x27升降摄像头怎么打开(x27的升降摄像头)

    x27升降摄像头怎么打开(x27的升降摄像头)

  • ipad2哪年上市的(ipad2是什么时候上市的)

    ipad2哪年上市的(ipad2是什么时候上市的)

  • ipad一直卡在白苹果(ipad一直卡在白苹果无限重启)

    ipad一直卡在白苹果(ipad一直卡在白苹果无限重启)

  • 合同管理的重点是什么(合同管理的重点和难点有哪些)

    合同管理的重点是什么(合同管理的重点和难点有哪些)

  • 备份计算机需要怎么做?(备份计算机需要多久)

    备份计算机需要怎么做?(备份计算机需要多久)

  • 创建vue2项目(vue创建项目后开始写的步骤)

    创建vue2项目(vue创建项目后开始写的步骤)

  • 苹果CMSV10最新大橙子电影模板破解无授权版-OK源码破解(苹果cmsjsui)

    苹果CMSV10最新大橙子电影模板破解无授权版-OK源码破解(苹果cmsjsui)

  • 沥青混凝土可以放多久
  • 收到现金分红的会计分录
  • 其他应收款怎样做平
  • 当前企业不存在是怎么回事
  • 车间管理人工资计入什么科目
  • 现金流量表余额等于货币资金吗
  • 固定资产变动时应如何处理
  • 网银费用及回单箱费用账务处理?
  • 年终结账后,应当更换新账的有( )
  • 投资性房地产房租计入什么会计科目
  • 权益资本成本率计算
  • 印花税票计税依据含税吗?
  • 发票付款证明怎么写
  • 车辆保险属于金融服务吗
  • 建筑服务税率是5
  • 电子发票收款人和复核人可以是一个人吗
  • 一般纳税人销售自己使用过的物品
  • 补充医疗保险报销流程
  • 建筑业预缴税款怎么退税
  • 工程款分配方式
  • 期间费用核算内容不应该包括
  • 在window中
  • 农业合作社零申报流程
  • 环评费入账的会计分录是什么啊
  • PHP:session_unset()的用法_Session函数
  • php笔记程序
  • 混合债清偿顺序
  • element ui el-tree
  • php用mysql连接数据库并查询
  • 加德满都治安状况如何
  • 核心概念英文翻译
  • 向客户收费
  • 代开开增值税专票和自己开有什么区别
  • vue 如何使用
  • vue如何实现登录
  • 数据挖掘和数据分析的区别与联系
  • js中的变量
  • 上级拔入资金
  • 工资外一次性收入88000交多少税
  • 临时工工资会计科目怎么录
  • phpcms专题页面模板
  • db2原理
  • 小企业会计准则适用于哪些企业
  • 销售清单有法律效力吗
  • 劳务发票进什么科目
  • 汇算清缴里的账户是什么
  • 公允价值变动损益属于什么科目
  • 委托加工环节应税消费品应纳税额的计算
  • 支付员工经济补偿金会计处理方式
  • 港币转人民币差多少钱
  • 公司筹建期间允许投标吗
  • 赠送货物怎么做账
  • 保洁阿姨工资怎么扣税
  • 被征用的不动产或者动产使用后应当怎样
  • sqlserver数据导出导入脚本
  • mysql事务用法
  • 哪个是win8.1更新win10的补丁
  • xp系统有什么用
  • 电脑连不上网怎么解决
  • linux基金会什么时候成立
  • win1020h2正式版下载
  • linux 管道实现
  • linux可视化界面怎么输入代码
  • windows图片锁屏
  • win7系统自带的截屏工具怎么打开
  • windows10 禁用u盘
  • unity Toggle Groud
  • mongo 安装
  • node.js可以跨平台吗
  • 从零开始学什么好
  • js优化108条建议
  • js中对象
  • 土地使用税申报流程图
  • 广东省广州市税务局分数线
  • 重庆国家税务电子税务局官网登录
  • 河北华盛税务师事务所
  • 因公出差伙食补助标准
  • 宾馆增值税专用发票可以抵扣
  • 朝阳地税局官网
  • 辽宁国税征期日历
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设