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

  • 闲鱼芝麻信用怎么提高(闲鱼芝麻信用怎么变成极好)

    闲鱼芝麻信用怎么提高(闲鱼芝麻信用怎么变成极好)

  • office办公软件是什么意思(Office办公软件是什么软件)

    office办公软件是什么意思(Office办公软件是什么软件)

  • opporeno4支持nfc功能吗(opporeno4pro支持nfc)

    opporeno4支持nfc功能吗(opporeno4pro支持nfc)

  • 抖音评论怎么变夜间模式(抖音评论怎么变绿色)

    抖音评论怎么变夜间模式(抖音评论怎么变绿色)

  • 苹果iOS13.5xr怎么清理运行内存(iphone13怎么说)

    苹果iOS13.5xr怎么清理运行内存(iphone13怎么说)

  • 微信原图超过25m怎么发送微信(微信原图超过25m怎么修改)

    微信原图超过25m怎么发送微信(微信原图超过25m怎么修改)

  • 苹果锁屏声音越来越小(为什么苹果手机的锁屏声音越用声音越小)

    苹果锁屏声音越来越小(为什么苹果手机的锁屏声音越用声音越小)

  • 手机相机专业模式字母的意思(手机相机专业模式什么情况下用)

    手机相机专业模式字母的意思(手机相机专业模式什么情况下用)

  • a1332是苹果几(苹果a1332是几个g的?)

    a1332是苹果几(苹果a1332是几个g的?)

  • i79700不超频配什么主板(i79700kf不超频配什么主板)

    i79700不超频配什么主板(i79700kf不超频配什么主板)

  • qq删了好友发消息对方知道吗(qq删了好友发消息出现感叹号)

    qq删了好友发消息对方知道吗(qq删了好友发消息出现感叹号)

  • 华为浏览器图标不见了(隐藏华为浏览器图标)

    华为浏览器图标不见了(隐藏华为浏览器图标)

  • r7和i7有什么区别(r7和i7有什么区别在哪联想拯救者)

    r7和i7有什么区别(r7和i7有什么区别在哪联想拯救者)

  • 5G大王卡还免流吗(5g王卡还享受腾讯软件免流嘛)

    5G大王卡还免流吗(5g王卡还享受腾讯软件免流嘛)

  • 照片隔空投送失败是为什么(照片隔空投送失败储存空间不足照片还在吗)

    照片隔空投送失败是为什么(照片隔空投送失败储存空间不足照片还在吗)

  • 苹果x采用什么芯片(苹果X采用什么屏幕)

    苹果x采用什么芯片(苹果X采用什么屏幕)

  • 华为mate30发布时间(华为mate30手机发布价格)

    华为mate30发布时间(华为mate30手机发布价格)

  • OPPO k5有hifi音效吗(oppok5音质)

    OPPO k5有hifi音效吗(oppok5音质)

  • OPPO手机怎么录屏(oppo手机怎么录屏视频)

    OPPO手机怎么录屏(oppo手机怎么录屏视频)

  • 三星手机怎么录屏幕视频(三星手机怎么录音)

    三星手机怎么录屏幕视频(三星手机怎么录音)

  • 华为imc是什么意思(华为ims是什么意思)

    华为imc是什么意思(华为ims是什么意思)

  • 手机??怎么打(手机怎么打印机直接打印)

    手机??怎么打(手机怎么打印机直接打印)

  • 一加7pro是哪个公司(一加7pro哪个版本最流畅)

    一加7pro是哪个公司(一加7pro哪个版本最流畅)

  • 微信怎么把聊天记录发给别人(微信怎么把聊天隐藏)

    微信怎么把聊天记录发给别人(微信怎么把聊天隐藏)

  • 千牛卖家版旺旺怎么不让联系人窗口自动弹出(千牛旺旺卖家版官方下载)

    千牛卖家版旺旺怎么不让联系人窗口自动弹出(千牛旺旺卖家版官方下载)

  • 本地如何搭建一个Stable Diffusion 的AI绘画工具?(搭建本地yum)

    本地如何搭建一个Stable Diffusion 的AI绘画工具?(搭建本地yum)

  • 【Spring】一文带你吃透AOP面向切面编程技术(上篇)(spring的文章)

    【Spring】一文带你吃透AOP面向切面编程技术(上篇)(spring的文章)

  • 增值税专用发票的税率是多少啊
  • 购入生产设备的增值税计入成本吗
  • 化肥发票怎么开
  • 会计凭证在设计中应遵循的设计原则
  • 机票报销需要什么单据
  • 结转完工入库产品成本计算
  • 公司借款给个人利息怎么做账
  • 无形资产没有了
  • 收到赔偿怎么做账
  • 企业工资薪酬包括哪些内容
  • 金税盘减免税额
  • 应纳税所得额数学
  • 出租包装物没收押金
  • 小微企业分公司 企业所得税优惠
  • 私车公用税务处理
  • 律师事务所的会计账务处理
  • 预付专利转让费计入什么科目?
  • 会计成本核算的三种基本方法
  • 代扣代缴境外增值税可以抵扣
  • 减免的城建税如何申报
  • 营运资金主要包括什么
  • 广告公司员工
  • 招待费的住宿费可以抵扣吗
  • 什么是要约的撤销
  • bios是什么请简要介绍一下
  • 如何一键重装系统win10
  • 企业间实物交易是指
  • PHP:pg_send_query()的用法_PostgreSQL函数
  • 海康威视网页插件下载
  • php的array_multisort()使用方法介绍
  • vue ui怎么用
  • 浅谈中国式现代化3000字论文
  • 商品入库进项税额怎么算
  • vue创建项目后开始写的步骤
  • 工业企业制造费用包括哪些
  • php 中奖概率算法
  • vue设置背景图片透明度
  • 前端发起请求怎么设置
  • 自动驾驶汽车决策与控制pdf
  • insg命令
  • code .命令
  • 企业资产损失税前扣除管理办法最新
  • 其他业务成本如何结转
  • 银行存款转银行存款 什么凭证
  • 增值税专用发票几个点
  • 认缴制下,资金什么时候必须到位
  • 进料加工保税是什么意思
  • 开票信息修改
  • 每月企业所得税怎么征收
  • 个人所得税专项附加扣除标准一览表
  • 财务报表与分析outcome2
  • 对公账户转到个体工商户
  • 弃置费用怎么处理
  • 工程预付款计入什么科目
  • 跨年的社保,账务怎么处理?
  • 什么是预收账款的正常余额
  • 购入固定资产一次性税前扣除
  • MySQL 5.7.14 net start mysql 服务无法启动-“NET HELPMSG 3534” 的奇怪问题
  • 注册表修改后如何生效
  • win8系统手机
  • win8怎么添加我的电脑到桌面
  • windows8使用技巧
  • win10 屏幕键盘
  • linux怎么下载安装腾讯Tim?
  • win101903更新安装失败
  • linux 日历
  • 如何使用node.js
  • 从零开始咋样
  • url跟uri
  • javascript的change
  • android设计模式的应用场景
  • c# unity ioc
  • jquery加载图片
  • 简单的设计模式
  • python内置方法大全
  • 税务举报偷税漏税电话
  • 江苏社保退工办理流程
  • 江苏省定额规则
  • 住房公积金交纳的原则
  • 湖南省国家税务局历任局长
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设