当前位置: 首页 > news >正文

前端面试基础知识整理【Day-11】

前言

前端面试基础知识整理【Day-1】-CSDN博客

前端面试基础知识整理【Day-2】-CSDN博客

前端面试基础知识整理【Day-3】-CSDN博客

前端面试基础知识整理【Day-4】-CSDN博客

前端面试基础知识整理【Day-5】-CSDN博客

前端面试基础知识整理【Day-6】-CSDN博客

前端面试基础知识整理【Day-7】-CSDN博客

前端面试基础知识整理【Day-8】-CSDN博客

前端面试基础知识整理【Day-9】-CSDN博客

前端面试基础知识整理【Day-10】-CSDN博客

Vue篇

1.从A页面切换到B页面,如何中断A页面中的请求

当用户从A页面跳转到B页面时,如果此时A页面有大量请求占用,会浪费用户带宽,还有可能在B页面弹出一个A页面的报错弹窗。

解决方法是用“AbortController

  1. 发送请求前,创建controller:const controller = new AbortController
  2. 绑定请求:controller.signal传给axios
  3. 组件卸载时拦截:在Vue的onBeforeUnmount生命周期中,调用controller.abort()终止网络连接,并且在axios中会抛出一个CanceledError
const controller = new AbortController() const fetchHeavyData = async () => { try { const res = await axios.get('https://api.example.com/heavy-data', { signal: controller.signal }) data.value = res.data } catch (error) { if (axios.isCancel(error)) { console.log('请求已中断:用户切走了页面,不必大惊小怪') } else { console.error('这才是真正的网络故障或接口 500 报错:', error) } } } fetchHeavyData() onBeforeUnmount(() => { controller.abort('组件卸载,主动掐断请求') })

2.Vue根组件可以有多个根标签吗

  • Vue2:不可以
  • Vue3:可以,Vue3引入了Fragment机制,支持多个根节点
  • 产生的问题:会导致透传属性($attrs)失败或警告,当父组件给子组件传一个class、style、@click,并且子组件没有用props或emits接收时,Vue3默认会把这些属性挂载到子组件的根节点上,如果有多个根节点,Vue就不知道应该挂载给谁,就会抛出警告。
  • 解决方法:在模版中手动用v-bind="$attrs"明确绑定

3.axios是基于Fetch还是XHR封装的?

axios是基于XMLHttpRequest(XHR)封装的,不过从axios17.0开始,官方引入了Fetch,允许用户选择底层方法是XHR还是Fetch

4.defineModel有哪些属性

defineModel用来简化v-model的双向绑定,它的参数对象里可以配置以下属性:

  • type:限制绑定的数据类型
  • default:如果没有传入v-model时,提供的默认值
  • required:布尔值,是否强制父组件传递该v-model
  • validator:自定义校验函数

除此之外,defineModel还可以用来指定多个v-model属性:

//父组件: <UserProfile v-model:name="user.name" v-model:age="user.age" v-model:phone="user.phone" /> //子组件: const name = defineModel('name') const age = defineModel('age', { type: Number }) const phone = defineModel('phone')

Git篇

提交代码时遇见冲突如何解决

  1. 如果当前有正在编辑的草稿(未add/commit),那么先用git stash将草稿缓存
  2. 接着执行git pull --rebase将远端代码拉取下来,此时会产生冲突,并解决冲突
  3. 当前文件的冲突解决完后,继续执行git add . 和git rebase --continue,解决下一个文件的冲突,直到git rebase --continue没有新的冲突了
  4. 执行git push
  5. 执行git stash pop弹出草稿

代码篇

1.new Set()

Set()自带去重,因此Set()常用来去重,下面是数组去重:

const arr = [1, 1, 2, 3, 4, 5, 6]; const newArr = [...new Set(arr)]; console.log(newArr);

字符串查重:

const string = "aaabbbccccddefdgcx"; const newArr = [...new Set(string)].join(''); console.log(newArr); // abcdefgx

Set去重的范围:

  1. 可以去重NaN
  2. 不可以去重对象(Object)

Set的四种用法:

const set = new Set(); // 增加,自动去重 set.add(1); set.add(1); set.add(2); console.log('now, set:', set); // 判断set的长度 console.log('set length is:', set.size); // 判断set是否有某个值 if(set.has(1)) { console.log("set有1"); } // 删除 set.delete(1); console.log('now, set:', set); // 清空 set.clear(); console.log('now, set:', set);

结果:

2.new Map()

JS里的对象只能存储字符串、数字、Symbol,但是Map可以存储任何数据类型(数组、函数、对象、DOM 节点、甚至 NaN)

const myMap = new Map(); const btnElement = document.getElementById('my-btn'); const userObj = { id: 1, name: '张三' }; // 🟢 增:set(key, value) myMap.set(btnElement, '这是按钮的附加数据'); myMap.set(userObj, { role: 'admin', active: true }); // 🔵 查:get(key) console.log(myMap.get(btnElement)); console.log(myMap.get(userObj).role); // 查询没有的值返回undefined console.log(myMap.get("test")); // 🟠 判存与大小:has() 和 size console.log(myMap.has(userObj)); console.log(myMap.size);
http://www.jsqmd.com/news/489393/

相关文章:

  • 贡献者必读:如何参与SIMP开源项目并提交高质量代码
  • 【雷达干扰】基于CFastICA交叉极化干扰对消-独立成分分析附Matlab代码
  • leetcode副产品:Deepseek老师讲HashSet(待阅读)
  • 【状态估计】基于卡尔曼滤波器实现月球陨石坑导航附Matlab代码
  • Spring Boot配置优先级详解
  • 【亲测免费】 探索知识图谱的力量: rahulnyk/knowledge_graph 项目详解
  • 基于微信小程序实现学生购电小程序管理系统【附项目源码】计算机毕业设计
  • 【数字信号调制】基于8相移键控8-PSK调制数字通信系统(含模拟噪声信道上的信号传输,包括调制、噪声添加、解调以及符号和比特错误率的性能评估)附Matlab代码
  • OpenCode 的 skills 网站相关信息
  • 好用的软件、网站、插件记录
  • JavaScript性能优化实战冶懒
  • 【资源分配】基于强化学习Q-Learning实现DSA认知无线网络资源分配附Matlab代码
  • 推荐:Jib — 容器化你的Java应用的新选择!
  • Spring全家桶框架篇
  • sebastian/code-unit核心组件解析:从ClassUnit到TraitMethodUnit
  • 粒子群算法PSO-AHP模型在综合评价中的构建及应用附Matlab代码
  • 2026年热门的高校就业指导中心方案厂家推荐:高校就业指导中心方案设备/高校就业指导中心方案开发/高校就业指导中心方案采购优质公司推荐 - 行业平台推荐
  • 华为eNSP三层交换机实验全解析
  • 消息队列篇
  • sql2o配置与实战:5分钟上手的数据库结果映射工具
  • 基于深度置信网络(DBN)与模糊神经网络(FNN)分类附Matlab代码
  • 猜数字小游戏来了~(冲冲冲!)
  • 基于决策树RGB图像分类附Matlab代码
  • SAP Fiori 图标体系实战:用 Icon Explorer、Virtual Element 与 Fiori Elements 提升业务识别效率
  • Nginx常见问题解决
  • PHing vs Make:PHP开发者必知的构建工具对比分析
  • Microsoft Agent Framework 测试豆包的根据图片生成矢量图的能力
  • 从0到1掌握PyNaCl:开发者必须了解的10个核心API
  • 2026年评价高的宽幅涂层机品牌推荐:辊式涂层机/立式玻纤涂层机实力厂家推荐 - 行业平台推荐
  • SAP Fiori 基础复合角色的设计逻辑、项目实践与 Clean Core 思维