2025年3月7日前端面试复盘 | Vue原理与JS数据类型高频考点

140 阅读2分钟

2025年3月7日前端面试复盘 | Vue原理与JS数据类型高频考点

一、面试问题回顾

1. Vue2的8个生命周期

核心答案:

  • 创建阶段:beforeCreate / created
  • 挂载阶段:beforeMount / mounted
  • 更新阶段:beforeUpdate / updated
  • 销毁阶段:beforeDestroy / destroyed
  • 特殊钩子:activated / deactivated(keep-alive)

记忆技巧:绘制生命周期流程图,标注父子组件执行顺序

2. Vue3生命周期变化

重大更新:

  • 组合式API替代选项式API

  • 生命周期钩子统一添加on前缀:

    • setup() 替代 beforeCreate/created
    • onBeforeMount / onMounted
    • onBeforeUpdate / onUpdated
    • onBeforeUnmount / onUnmounted

代码对比示例:

export default {
  created() { /*...*/ },
  mounted() { /*...*/ }
}

// Vue3
import { onMounted } from 'vue'
setup() {
  onMounted(() => { /*...*/ })
}

3. 改变that时this指向问题

高频误解点解析:

  • that本质是this的引用副本

  • 箭头函数特性:词法作用域绑定

  • 常见修改方式:

    • bind/call/apply显式绑定
    • 闭包保存上下文
    • 箭头函数继承外层this

经典案例:

  name: 'obj',
  print: function() {
    const that = this
    setTimeout(function() {
      console.log(that.name) // 正确访问
      console.log(this.name) // undefined(非严格模式为window)
    }, 100)
  }
}

4. 前端数据类型体系

基础数据类型(7种):

  • String / Number / Boolean
  • Null / Undefined
  • Symbol(ES6)
  • BigInt(ES2020)

引用数据类型:

  • Object(包含Array/Function/Date等)

类型判断技巧:

  • typeof 检测基础类型(注意null返回object)
  • instanceof 检测引用类型
  • Object.prototype.toString.call() 精确判断

5. 原始类型 vs 引用类型

特征原始类型引用类型
存储位置栈内存堆内存
赋值方式值拷贝地址引用
比较方式值比较引用比较
可变性不可变可变
典型示例let a = 1let arr = [1,2]

内存示意图:

a: 0x001     [1,2,3]
b: 0x001     ↑
              arr: 0x001

二、面试反思

  1. 准备建议:绘制Vue生命周期执行流程图
  2. 易错重点:闭包与this绑定的关系理解
  3. 加分技巧:能说出BigInt的应用场景
  4. 进阶理解:解释基本类型包装对象机制

三、推荐学习资料

  1. 《你不知道的JavaScript(上卷)》- 作用域与闭包
  2. Vue官方文档 - 组合式API章节
  3. MDN Web Docs - 数据类型与内存管理