202312实战面试

1、 事件循环和变量提升。

复制代码
for(var i = 0; i <= 5; i++){`
`  setTimeout(() =>{`
`  console.log(i)`
`  }, 1000)`
`}`
`console.log(i)`
`// 先输出6、间隔一秒后输出六次6;`

`// 考察宏微任务、EventLoop 之类`
`Promise.resolve().then(() => {`
`    console.log(0);`
`    return Promise.resolve(4);`
`}).then((res) => {`
`    console.log(res)`
`})`

`Promise.resolve().then(() => {`
`    console.log(1);`
`}).then(() => {`
`    console.log(2);`
`}).then(() => {`
`    console.log(3);`
`}).then(() => {`
`    console.log(5);`
`}).then(() =>{`
`    console.log(6);`
`})`
`// 0、1、2、3、4、5、6`
`

2、this指向。

复制代码
function fun(){`
`  console.log(this.length)`
` }`
`let arr = [fun, 1, 2] `
`arr[0]();`

`let fun2 = arr[0];`
`fun2()`
`// 3、1`
`

3、css实现九宫格,横间距15px,列间距10px

复制代码
  <style>`
`    .grid-container {`
`      display: flex;`
`      flex-wrap: wrap;`
`      gap: 10px; /* 列间距 */`
`      justify-content: space-between; /* 横向间距 */`
`      padding: 15px; /* 外边距,用于横向间距 */`
`      box-sizing: border-box;`
`    }`

`    .grid-item {`
`      flex: 0 0 calc(33.3333% - 10px); /* 三列,减去列间距 */`
`      box-sizing: border-box;`
`      background-color: #3498db;`
`      height: 0; /* 这里的高度设置为0,由内容撑开 */`
`      padding-bottom: calc(33.3333% - 10px); /* 三列,减去列间距 */`
`      position: relative;`
`    }`
`  </style>`
`

4、请简述 **MutationObserver、**IntersectionObserver、 ResizeObserver

  1. IntersectionObserver : 监听目标元素与其祖先或视口的交叉变化 ,主要用于实现懒加载等场景。
  2. ResizeObserver : 监听元素的尺寸变化 ,当被监听元素的尺寸发生变化时,会触发回调函数。
  3. MutationObserver 是 JS 中的一个接口,用于监听 DOM 树的变化 。通过 MutationObserver,你可以注册回调函数,当监测的 DOM 节点或子树发生变化时,将会触发这些回调函数。这个接口的主要用途是取代过去常用的 DOM3 事件监听器的方式,提供了更灵活、更强大的 DOM 变化监测机制。
  4. PerformanceObserver : 用于监控性能相关 的信息,例如资源加载、用户输入延迟等。通过 PerformanceObserver 可以收集和分析网页性能数据。

5、 简述attr、listeners

在Vue.js中,attr属性是一个对象,它包含了非prop绑定的特性,即父组件传给子组件的所有属性。attrs对象是没有响应性的,即当父组件修改属性时,子组件并不会获得更新。但是,如果使用v-bind="attrs"将attrs绑定到子组件中,那么子组件会继承父组件的所有非prop特性,且当父组件更新这些特性时,子组件也会随之更新。

listeners:包含所有父组件中的 v-on 事件监听器 (不包含 .native 修饰器的) ,可以通过 v-on="listeners" 传入内部组件。

attr属性与props属性的关系

在Vue.js中,attr属性和props属性是息息相关的。可以用attr属性和props属性结合,完成父组件值向子组件值的传递。

在子组件中,可以使用props来获取通过props传递的值,使用attrs获取通过非prop特性传递的值。如果想在子组件中获取不论是通过prop还是非prop传递的值,可以使用props和attrs结合。

使用$attr属性处理未知属性

在子组件中,如果使用v-bind="$attrs"将非prop特性绑定到子组件中时,会将父组件传递的所有未知属性都传递给子组件。对于未知属性,子组件会将其渲染成HTML特性,并且不会替换已有的特性。

使用$attr属性控制特性顺序

在子组件中,使用v-bind可以将attrs属性绑定到子组件中,并控制特性的顺序。可以结合对象展开运算符与v-bind,将attrs中的特性添加到元素的特性列表中,并控制其顺序。

$attrs属性在递归组件中的使用

在递归组件中,父组件不知道递归组件的深度,所以无法为每一层递归组件都设置一个props。在这种情况下,可以使用$attrs属性向下传递数据。

相关推荐
卸任9 小时前
Vibe coding工具使用心得
前端·ai编程
brien910 小时前
为什么模型标称 1M,Google Antigravity 聊到 256K 却突然失忆?我们给它做了个原生行内监控圆环
前端
修炼的dance10 小时前
录屏关键帧间隔多少合适?六档实测,2秒到10秒小了75.6%
前端
Lank_M10 小时前
关键帧从1秒拉到10秒,录屏小87.3%,摄像头小10.8%
前端
补码缩写10 小时前
用 ffprobe 拆录屏,八成字节在 29 个关键帧上
前端
百思不得小李10 小时前
一个复杂的动态表单是如何实现的
前端·设计模式
陈随易10 小时前
Cmder 停更 17 个月,2.0 支持 Windows Terminal
前端·后端·程序员
清晨Coding10 小时前
删了 Cookie 还能自动登录?Google系网站登录态自动恢复的原理分析
javascript
风骏时光牛马11 小时前
前沿视界
前端
kyriewen11 小时前
我扫了 814 个依赖,97 个还敢要 Node 10
前端·javascript·程序员