位置: IT常识 - 正文

2023年前端面试题汇总(21年前端面试题)

编辑:rootadmin
2023年前端面试题汇总 一:JavaScript 1、闭包是什么?利弊?如何解决弊端?

推荐整理分享2023年前端面试题汇总(21年前端面试题),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:2023年前端面试题vue,前端年后面试真题,2023年前端面试题vue性能优化,2023年前端面试八股文,2023年前端面试八股文,2023年前端面试题vue,2023年前端面试题,2023年前端面试题,内容如对您有帮助,希望把文章链接给更多的朋友!

闭包是什么:JS中内层函数可以访问外层函数的变量,外层函数无法操作内存函数的变量的特性。我们把这个特性称作闭包。

闭包的好处:

隔离作用域,保护私有变量;有了闭包才有局部变量,要不然都是全局变量了。让我们可以使用回调,操作其他函数内部;变量长期驻扎在内存中,不会被内存回收机制回收,即延长变量的生命周期;

闭包的弊端:内层函数引用外层函数变量,内层函数占用内存。如果不释放内存,过多时,易引起内存泄露。

解决办法:无法自动销户,就及时手动回收,使用后将函数的引用赋null。

2、深度拷贝

1、深拷贝与浅拷贝的区别?

拷贝的层级不同,深拷贝是指每一层数据的改动都不会影响原对象和新对象,浅拷贝只有第一层的属性变动不互相影响,深层的数据变动还会互相影响。

浅拷贝:Object.assign深拷贝:JSON.stringify和JSON.parse

2、JSON的stringify和parse处理的缺点?

如果对象中有属性是function或者undefined,处理后会被过滤掉;如果属性值是对象,且由构造函数生成的实例对象,会丢弃对象的constructor;

3、$.extend()

使用jquey的extend方法不仅能实现深度拷贝,还能实现深度合并。具体用法

深度拷贝:$.extend({},targetObject) // targetObject是需要复制的对象

深度合并:$.extend(true,{},targetObject1,targetObject2) // 可以将两个对象深度合并后再返回出一个新对象

3、如何判断空对象?如何区分数据类型?

    判断空对象

1、用JSON的stringify和parse转成字符串后,跟'{}'对比;2、用ES6,判断Object.keys(targetObject)返回值数组的长度是否为0;3、用ES5,判断Object.getOwnPropertyNames(targetObject)返回的数组长度是否为0;

   区分数据类型

let a = [1,2]Object.prototype.toString.call(a) // '[object Array]' 4、如何改变this指向?区别?call/applylet a = { name: 'sunq', fn:function(action){ console.log(this.name + ' love ' + action); }}let b = {name:'sunLi'}// 正常的this指向a.fn('basketball'); // sunq love basketball// 改变this指向,并体现call与apply的区别a.fn.apply(b,['football']); // sunLi love footballa.fn.call(b,'football'); // sunLi love football// call 和 apply 区别: call 和 apply 都是可以改变this 指向的问题, call 方法中传递参数要求一// 个 一个传递参数。 但是apply 方法要求传递参数是一个数组形式。bind// 还是上面的示例,bind也可以实现call和apply的效果。// bind的不同之处在于bind会返回一个新的函数。如果需要传参,需要再调用该函数并传参a.fn.bind(b)('piano'); // sunLi love piano5、沙箱隔离怎么做?2023年前端面试题汇总(21年前端面试题)

使用iframe可以实现,变量隔离

6、浏览器存储,他们的区别?localStorage:永久保存,以键值对保存,存储空间5MsessionStorage:关闭页签/浏览器时清空cookie:随着请求发送,通过设置过期时间删除session:保存在服务端

localStorage/sessionStorage是window的属性,cookie是document的方法

7、常用的数组方法有哪些?改变原数组:push、pop、shift、unshift、sort、splice、reverse不改变原属组:concat、join、map、forEach、filter、slice

    slice和splice的区别?

slice切片的意思,根据传入的起始和终止下标,获取该范围数组。splice可根据传入参数个数不同实现删除、插入操作,直接操作原数组。第1个参数为起始下标,第2个为删除个数,第3个为要增加的数据。

数组如何滤重?

8、Dom事件流的顺序?什么是事件委托?

当页面上的一个元素被点击时,先从document向下一层层捕获到该元素。然后再向上冒泡,一层层触发。

事件委托是将事件写在父级元素上,e.target是事件捕获时那个最小的元素,即选中的元素。所以可以根据e.target操作选中的元素。这样不需要给每个子元素绑定事件,代码更加简约。

9、对原型链的认识?

js通过原型链模拟实现面向对象,比如通过实例化一个构造函数可以给每个对象挂载自己专属的属性,通过给类的prototype上赋方法是所有对象所共有的方法。每次实例化不再赋值原型链上的方法。

10、防抖/节流的区别?

区别:防抖只会在最后一次事件后执行触发函数,节流不管事件多么的频繁,都会保证在规定时间段内触发事件函数。

防抖:

原理是维护一个定时器,将很多个相同的操作合并成一个。规定在delay后触发函数,如果在此之前触发函数,则取消之前的计时重新计时,只有最后一次操作能被触发。例如:实时搜索的input,一直输入就不发送。

let input = document.querySelector("input");let time = null;//time用来控制事件的触发input.addEventListener('input',function(){ //防抖语句,把以前的定时删除,只执行最后一次 if(time !== null){ clearTimeout(time); } time = setTimeout(() => { console.log(this.value);//业务实现语句,这里的this指向的是input },500) })节流:

原理是判断是否达到一定的时间来触发事件。某个时间段内只能触发一次函数。例如:在指定的时间内多次触发无效

//节流 function throttle(fn, time) {//连续触发事件 规定的时间 let flag = false; return function () { //使用标识判断是否在规定的时间内重复触发了函数,没有就触发,有就不触发 if (!flag) {//不为假时 执行以下 fn();//触发事件 flag = true;//为真 setTimeout(() => {//超时调用(在规定的时间内只执行一次) flag = false; }, time); } } } mybtn.onclick = throttle(btn, 3000);//单击事件 节流(btn,3s时间)二:Html1、重绘和重排(回流/重构/重载)是什么?如何优化?样式的调整会引起重绘,比如字体颜色、背景色调整等Dom的变动会引起重排,比如定位改动、元素宽高调整

避免循环插入dom,比如table的行。可以js循环生成多个dom后,一次性插入。

2、html5有哪些新特性?本地存储,比如localStorage、sessionStorage语义化标签,如header、footer、nav等,使代码结构清晰,利于seocanvassvgweb worker,在主线程外再创建一个线程,可与主线程交互拖放功能三:CSS1、如何实现一个宽度不固定的上下左右居中的弹框?方法一:.pop{ width: 300px; height: 300px; position: fixed; left: 0; right: 0; top: 0; bottom: 0; margin: auto; border: 1px solid red;} 方法二:.chartLengend { // 父元素 width: 60px; height: 40px; position: relative; .line { // 子元素 width: 100%; height: 3px; background-color: #DEA182; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); border-radius: 2px; }}2、伪类和伪元素区别?伪类本质上用于弥补常规css选择器的不足,因为如果没有我们可能需要多写一个class,所以叫伪类.class:last-child{}.class:first-child{}a:link {color:green;}a:visited {color:green;}a:hover {color:red;}a:active {color:yellow;}伪元素本质上是创建了一个有内容的虚拟元素,如::before   ::after。因为相当于多了一个元素/节点,所以叫为元素// :before用于在某个元素之前插入某些内容。// :after用于在某个元素之后插入某些内容。cssp:before{ content:"Read this: ";}html:<p>I live in Ducksburg</p>页面展示:Read this: I live in DucksburgF12看dom中:beforeRead this: I live in Ducksburg四:Vue1、单页面应用是什么?优缺点?如何弥补缺点

单页面对一个入口DOM通过路由去更改内容,整个应用只有一个html页面

SPA优点:用户体验好,没有页面切换就没有白屏情况;

SPA缺点:首屏加载慢,不利于SEO

SPA弥补:通过压缩、路由懒加载缓解首屏慢;通过SSR 服务器端渲染解决SEO问题;

2、组件及通信方式有哪些?

2.1、什么是组件?

组件是可复用的 Vue 实例,且带有一个名字:在这个例子中是 。我们可以在一个通过 new Vue 创建的 Vue 根实例中,把这个组件作为自定义元素来使用:

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

上一篇:打造出ChatGPT的,是怎样一群人?

下一篇:web实验三 JavaBean(javaweb实验一)

  • 抖音火山账号怎么变成抖音号(抖音火山账号怎么登录抖音)

    抖音火山账号怎么变成抖音号(抖音火山账号怎么登录抖音)

  • 佳能mp288警告灯亮(佳能MP288警告灯闪烁)

    佳能mp288警告灯亮(佳能MP288警告灯闪烁)

  • 手机号封号后如何解除(手机号封号后如何解绑)

    手机号封号后如何解除(手机号封号后如何解绑)

  • 复制链接到淘宝为什么弹不出来了(复制链接到淘宝买东西的券是真的吗)

    复制链接到淘宝为什么弹不出来了(复制链接到淘宝买东西的券是真的吗)

  • 微星主板检测不到m2(微星主板检测不到固态硬盘)

    微星主板检测不到m2(微星主板检测不到固态硬盘)

  • 录屏按钮怎么调出来(录屏按钮在哪里设置)

    录屏按钮怎么调出来(录屏按钮在哪里设置)

  • mi4lte是什么型号(mi4c是什么版本手机)

    mi4lte是什么型号(mi4c是什么版本手机)

  • 苹果手机只能用移动卡吗(苹果手机只能用一个微信吗)

    苹果手机只能用移动卡吗(苹果手机只能用一个微信吗)

  • 苹果7手机有几种型号内存(苹果7手机有几个喇叭)

    苹果7手机有几种型号内存(苹果7手机有几个喇叭)

  • 天猫精灵远程唤醒是什么功能(天猫精灵远程唤醒有什么用)

    天猫精灵远程唤醒是什么功能(天猫精灵远程唤醒有什么用)

  • 抖音有没有已读功能(抖音有没有读弹幕的人)

    抖音有没有已读功能(抖音有没有读弹幕的人)

  • iphonexsmax电量怎么显示(iphonexsmax手机电量百分比)

    iphonexsmax电量怎么显示(iphonexsmax手机电量百分比)

  • 快手发作品闪退怎么回事(快手发视频老是闪退是什么原因)

    快手发作品闪退怎么回事(快手发视频老是闪退是什么原因)

  • 苹果xr是索尼摄像头吗(索尼的xr和kd)

    苹果xr是索尼摄像头吗(索尼的xr和kd)

  • 如何卸载mcafee(如何卸载360安全卫士?)

    如何卸载mcafee(如何卸载360安全卫士?)

  • 怎么下载快手图片(怎么下载快手图片到手机)

    怎么下载快手图片(怎么下载快手图片到手机)

  • vivo怎样设置个人铃声(怎么设置vivo)

    vivo怎样设置个人铃声(怎么设置vivo)

  • pr2019怎么添加字幕(pr2019如何添加文字)

    pr2019怎么添加字幕(pr2019如何添加文字)

  • 苹果11电池续航时间(苹果11电池续航多少毫安)

    苹果11电池续航时间(苹果11电池续航多少毫安)

  • 微信发原图有什么区别(微信发原图什么意思)

    微信发原图有什么区别(微信发原图什么意思)

  • 简述计算机维护的常见方法(简述计算机维护知识的主要内容)

    简述计算机维护的常见方法(简述计算机维护知识的主要内容)

  • vivo电话声音小怎么办(vivo电话声音小怎么调大声)

    vivo电话声音小怎么办(vivo电话声音小怎么调大声)

  • 抖音怎样录制自己唱歌(抖音怎样录制自己唱歌加伴奏)

    抖音怎样录制自己唱歌(抖音怎样录制自己唱歌加伴奏)

  • 手机上wps文档怎么打包(手机上wps文档怎么传到电脑wps上)

    手机上wps文档怎么打包(手机上wps文档怎么传到电脑wps上)

  • 手机号被轰炸怎么解除(手机号被轰炸怎么破?)

    手机号被轰炸怎么解除(手机号被轰炸怎么破?)

  • 阿里巴巴如何盈利(阿里巴巴1688的盈利模式)

    阿里巴巴如何盈利(阿里巴巴1688的盈利模式)

  • 小米无线路由器变砖怎么办?小米路由器U盘刷机视频教程(小米无线路由器internet黄灯)

    小米无线路由器变砖怎么办?小米路由器U盘刷机视频教程(小米无线路由器internet黄灯)

  • pccntmon.exe进程是什么文件 pccntmon进程查询(pc程序是什么)

    pccntmon.exe进程是什么文件 pccntmon进程查询(pc程序是什么)

  • 企业进入
  • 运输费劳务是否可以扣除
  • 注销有几种方法
  • 计提坏账又收回
  • 居民企业只就其境内全部所得纳税
  • 免税的农业企业可以抵扣专票吗
  • 个人独资企业法人承担什么责任
  • 装卸收入的增值税税率是多少
  • 预收账款缴纳企税怎么算
  • 企业个人所得税申报系统官网
  • 购买的固定资产可以一次计入管理费用吗
  • 泡菜增值税率
  • 代购要交税么
  • 作进项税转出
  • 内退人员工资标准
  • 税收六项减免
  • 开普票可以抵扣进项票
  • 一般纳税人税控盘维护费会计分录
  • 汇款退回重新汇到银行卡
  • 废料出售收入
  • 公司承兑汇票怎么兑现
  • 公积金可以在个税前全额扣除吗
  • 办公费差旅费属于
  • 真实有效的18岁身份证
  • windows 11 正式
  • 一些出口商为什么要倾销
  • mac系统回到桌面快捷键
  • 代开专票缴纳的增值税怎么做账?
  • 其他费用的账务处理
  • 股票金融资产被称为
  • 应收账款的主要功能包括哪些
  • PHP:mcrypt_encrypt()的用法_Mcrypt函数
  • 母公司收取子公司管理费的税率
  • html小游戏代码大全
  • 如何防止sql注入 java
  • 跨年进项税额未做账
  • 物业管理服务小组职责
  • 支票小写金额前的羊
  • 帝国cms使用redis
  • 清包工方式建筑服务
  • 劳务公司属于什么
  • 外购存货的初始成本由买价加采购费用构成
  • SQL Server 2005通用分页存储过程及多表联接应用
  • 对企业发票的监管
  • 酒店购买天然气开票的摘要写什么
  • 其他综合收益会影响未分配利润吗
  • 旅游发票可以做差旅费吗
  • 另一种收到企业信息英文
  • 研究费用记入什么费用
  • 五险一金没有金
  • 企业变更地址需要几天
  • 现金日记账里
  • 年终奖都有啥
  • 购建固定资产属于投资活动吗
  • 借款利息如何支付
  • 款已付未收到发票
  • 进项税怎么做账务处理
  • 营业收入怎么确定
  • 为什么要挂靠其他劳务派遣公司?有什么利弊?
  • 什么是企业合并的具体动因之一
  • 提供劳务的收入计入什么科目
  • sql 普通行列转换
  • Windows下System Volume Information文件夹是干嘛用的?
  • uefi硬盘安装win10
  • 电脑开机时进入安全模式怎么退出
  • ubuntu系统安装报错
  • vmstat命令
  • win7系统怎么重置网络
  • win10系统出现问题怎么办
  • win8系统与win10哪个好
  • ubuntu20录屏
  • EGL简介
  • js取数字的每位数
  • python抓取网络数据
  • jquery怎么获取
  • javascript学习指南
  • js实现手风琴
  • 网络发票管理系统
  • 办理对外支付税务备案需要多久时间
  • 增值税是要上交给国家的吗?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设