前端面试常见的几个面试题

本文概述了JavaScript中的Set数据结构、原型链的工作原理,介绍了函数的防抖和节流、DOM操作中的重绘和回流概念,以及事件委托和闭包。还涉及了JavaScript引擎的语法分析、预编译和执行过程,以及事件处理中的阻止冒泡和默认行为。
摘要由CSDN通过智能技术生成

 一  什么是set数据结构?

Set数据结构,类似数组。所有的数据都是唯一的,没有重复的值。它本身是一个构造函数

let set6 = [...new Set([1, 2, 2, 3, 4, 3, 5])] 去重 是伪数组

二、什么是原型链?

答:avaScript是面向对象的,每个实例对象都有一个__proto__属性,该属性指向它的原型对象,

这个实例对象的构造函数有一个原型属性prototype,与实例的proto属性指向同一个对象。

当一个对象在查找一个属性的时候,自身没有就会根据__proto__向它的原型进行查找,

如果都没有,则向它的原型的原型继续查找,直到查到Object.prototype.proto_为null,这样也就形成了原型链。

三、函数的防抖和节流。

防抖函数:将多次触发变成最后一次触发。通俗的理解就是电梯里每进一个人电梯门关闭的时间重新计算

节流函数:将多次执行变成每隔一个时间节点去执行的函数。通俗的理解就是电梯无论是否进人,开关时间都是固定的

四、.什么是重绘 什么是回流

重绘:改变元素颜色 改变元素背景色时,说白了就是元素样式改变不影响布局时

回流(也称重排):页面初次渲染,浏览器窗口大小改变,元素尺寸 位置 内容发生改变,dom删除/添加等等 说白了就是元素的尺寸,结构发生改变时就是回流

五、什么是事件委托?

让利用事件冒泡的原理,让自己的所触发的事件,让他的父元素代替执行。

六 闭包

闭包就是能够读取其他函数内部变量的函数。

当一个函数嵌套一个内部函数,并且这个内部函数是外部函数的返回值,当内部函数调用时引用了外部函数的自由变量(参数,变量,函数声明),致使外部函数无法释放内存空间,这就形成了闭包。

js引擎运行代码三步:
1.语法分析 : 在执行代码之前检查脚本中是否存在语法错误,如果有则给出报错
2.预编译 :
1.全局预编译
①生成一个全局的GO
②查找所有变量声明,如果当前AO或GO对象中不存在该变量则该变量作为对象的属性名存在,
值为undefined,如果该对象中已存在改变相同的属性名,则不做任何改变
④如果遇到函数声明,则将函数名作为对象的属性名,函数作为对象的属性值,如果遇到重名则覆盖当前值
2.局部预编译
①在函数开始执行的前一刻,生成一个AO对象
②分析函数的参数,将形参作为对象的属性名,实参作为对象的属性值,没有实参胡形参则值为undefined
③查找所有变量声明,如果当前AO中不存在该变量则该变量作为对象的属性名存在,
值为undefined,如果该对象中已存在改变相同的属性名,则不做任何改变
④如果遇到函数声明,则将函数名作为对象的属性名,函数作为对象的属性值,如果遇到重名则覆盖当前值
3.解释执行 : 逐行执行,做赋值操作

阻止冒泡和默认行为

阻止默认行为e.preventDefault

阻止冒泡e.stopPropagation

这只是一小部分

面试题还有很多,点个不迷路,下回接着看。


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值