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

  • enscape灯光怎么打(enscape灯光怎么不产生反射)

    enscape灯光怎么打(enscape灯光怎么不产生反射)

  • realme gt neo2屏幕尺寸是多少(realme GT Neo2屏幕亮度是多少)

    realme gt neo2屏幕尺寸是多少(realme GT Neo2屏幕亮度是多少)

  • oppo reno 4se支持NFC功能吗(oppo reno4支持nfc吗?)

    oppo reno 4se支持NFC功能吗(oppo reno4支持nfc吗?)

  • 对方录屏 微信会提醒么(对方录屏微信视频电话会显示吗)

    对方录屏 微信会提醒么(对方录屏微信视频电话会显示吗)

  • 华为nova7pro充电要多久(华为nova7pro充电器型号图片)

    华为nova7pro充电要多久(华为nova7pro充电器型号图片)

  • u盘做成启动盘识别不了(u盘做成启动盘后还能恢复吗)

    u盘做成启动盘识别不了(u盘做成启动盘后还能恢复吗)

  • 华为微信信息不显示在屏幕上怎么设置(华为微信信息不亮屏)

    华为微信信息不显示在屏幕上怎么设置(华为微信信息不亮屏)

  • word出现红色波浪线表示什么(word出现红色波浪线是语法问题吗)

    word出现红色波浪线表示什么(word出现红色波浪线是语法问题吗)

  • qq空间照片无法保存到手机(qq空间照片无法访问)

    qq空间照片无法保存到手机(qq空间照片无法访问)

  • 设为群待办怎么取消(设为群待办怎么查看)

    设为群待办怎么取消(设为群待办怎么查看)

  • vb变量名命名规则(vb程序中变量命名的规则)

    vb变量名命名规则(vb程序中变量命名的规则)

  • 嘀嗒出行可以开发票吗(嘀嗒出行可以开票吗?)

    嘀嗒出行可以开发票吗(嘀嗒出行可以开票吗?)

  • 钢筋平法是什么(钢筋平法是什么意思)

    钢筋平法是什么(钢筋平法是什么意思)

  • 片头logo视频怎么制作(视频片头制作软件)

    片头logo视频怎么制作(视频片头制作软件)

  • b612的变音怎么弄(b612怎么改变背景)

    b612的变音怎么弄(b612怎么改变背景)

  • word默认字体是几号字体(word默认字体是等线怎么改)

    word默认字体是几号字体(word默认字体是等线怎么改)

  • 无线投屏怎么用(正品电视剧无线投屏怎么用)

    无线投屏怎么用(正品电视剧无线投屏怎么用)

  • python读取excel

    python读取excel

  • 掌上生活定位怎么切换(掌上生活定位怎么关)

    掌上生活定位怎么切换(掌上生活定位怎么关)

  • oppoa5桌面时间图标怎么设置(oppoa57的桌面时间哪去了)

    oppoa5桌面时间图标怎么设置(oppoa57的桌面时间哪去了)

  • 快猫为什么加载这么慢

    快猫为什么加载这么慢

  • 电脑线怎么连接(电脑线怎么连接网络)

    电脑线怎么连接(电脑线怎么连接网络)

  • 为什么连接无线网时显示“拒绝接入”?(为什么连接无线网超时)

    为什么连接无线网时显示“拒绝接入”?(为什么连接无线网超时)

  • 前端设置页面字体尺寸跟随屏幕大小而进行变化(前端页面默认字体)

    前端设置页面字体尺寸跟随屏幕大小而进行变化(前端页面默认字体)

  • Vue 原理整理(vue3 原理)

    Vue 原理整理(vue3 原理)

  • linux服务器下phpcms提示hash数据验证失败的解决方法(linux开启php服务)

    linux服务器下phpcms提示hash数据验证失败的解决方法(linux开启php服务)

  • 研发费用加计扣除75%还是100%
  • 小规模纳税人要做账吗
  • 辞退补偿款怎么算
  • 已暂估入库原材料,确认收不到发票怎么调账
  • 资产负债表税务报表中其他应收款可以为负数吗
  • 增值税专用发票电子版
  • 资产减值准备对股票的影响
  • 房屋及建筑物属于什么会计要素
  • 商贸企业涉税问题
  • 调整增值税误差的原因
  • 购买虚开增票怎么处理?
  • 货样广告品管理办法
  • 简易计税是否可以开增值税专用发票
  • 企业年会的增值税能抵扣吗?
  • 注销时分公司欠款怎么办
  • 房产税的改革方向
  • 个体工商户的税收优惠政策有哪些
  • 本年利润的借贷双方表示什么
  • 月销售不超过10万免征哪些税
  • 信用卡购物消费怎么算
  • 投资公司如何确定收入
  • 旅游公司广告费支出扣除标准
  • 企业所得税调增调减项目比例
  • cmos电池低是什么意思
  • PHP调用API
  • Windows11预览体验计划空白
  • win10记事本在哪找
  • 税费缴纳比例
  • 矿产资源补偿费计入科目
  • 可供分配利润在财报哪里
  • 跨站脚本攻击是什么
  • 供电局销售电力产品
  • 银行利息收入应计入什么科目
  • php使用for循环计算1到100的奇数和
  • php 冒泡
  • vue set up
  • javaweb购物
  • vue权限控制设计
  • uniapp零基础小白到项目实战
  • 前端实战开发
  • 保理属于什么行业分类
  • 跨境电商企业要进入某个国家的市场 必须先做的工作是
  • 公允价值计量转权益法例题
  • 税票抵扣是多少个点
  • 约当产量法的含义
  • sqlserver2008安装完在哪打开
  • 外购商品用于宣传需要缴纳增值税吗
  • 购买二手车后
  • 委托收款的业务场景有哪些
  • 商业承兑背书后怎么办
  • 申请国家知识产权的条件
  • 外商投资企业的中国投资者
  • 已付款收货未收货怎么办
  • 支付应付账款的摘要
  • 提供加工劳务计入什么科目
  • 税务报表工会经费是按什么交了
  • 日记账的设置
  • tcpdump的用法
  • mysql运行代码
  • win8系统启动慢怎么办
  • win7 64位运行软件提示MSCOMCTL.OCX丢失或无效该怎么办?
  • vc6运行程序
  • 高县土火锅历史介绍
  • win10周年更新版是什么意思
  • win8怎么设置
  • 网页字体大小调整方案
  • unity onbecameinvisible
  • Unity3D事件函数的执行顺序
  • 深入理解计算机系统
  • Python下的慢
  • python str()怎么用
  • jquery获取值的几种方法
  • asyncio使用
  • 建筑业小规模纳税人工程结算增值税
  • 国家税务总局办税指南
  • 四川省地方税务局公告2018年第3号
  • 运输类税点
  • 管道运输企业的核心指标是
  • 北京身份证网上换证流程
  • 船舶吨税案例分析
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设