面试总结复盘

面试题

js 基础问题】

var、let、const 区别

函数提升优先于变量提升,函数提升会把整个函数挪到作用域顶部,变量提升只会把声明挪到作用域顶部

  • let、const 声明的变量、常量拥有块级作用域,var 声明的变量作用域是整个函数体
  • var 声明的全局变量是全局对象的属性(window 的属性),let 声明的全局变量不是
  • const 声明的数据类型不能再赋值,但是对象类型数据的属性和方法还是可以修改的。因为 const 指的是那个内存地址,而引用数据类型保存的是指向那个内存地址的指针
  • let、const 声明不存在提升、var 会提升到作用域顶部
  • let、const 不可重复声明,重复声明会报错

Object 相关的方法及使用还有属性

箭头函数和普通函数的区别

  1. 箭头函数语法更简洁,箭头函数是匿名函数。普通函数定义需要 function 关键字。

  2. 箭头函数没有自己的 this,它会捕获自己在定义时(注意,是定义时,不是调用时)所处的外层执行环境的 this,并继承这个 this 值(它只会从自己的作用域链的上一层继承 this)。普通函数全局调用时指向 window 或者 global,作为对象的方法调用时指向这个对象。

  3. 箭头函数继承而来的 this 指向永远不变。apply、call、bind 无法改变指向但是也不报错。

  4. 箭头函数不能做构造函数使用因为它没有自己的 this 值。用 new 调用会报错。VM156:7 Uncaught TypeError: Fun is not a constructor

  5. 箭头函数没有自己的 arguments。不过可以用 rest 参数代替 arguments 对象,访问箭头函数的参数列表。rest 参数就是…。

    1
    2
    3
    4
    let b = (...val) => {
    console.log(...val)
    }
    b(1, 2, 3)
  6. 箭头函数没有原型 prototype

  7. 箭头函数不能用作 Generator 函数,不能使用 yeild 关键字

Promise 相关

Promise 有三种状态:pending(等待)、resolved(完成)、rejected(拒绝)
其他 Promise 相关的在 notion

js 进阶问题及手写题

Vue 问题

vue $nextTick 原理

React 问题

html&css 问题

性能问题

Author: XavierShi
Link: https://blog.xaviershi.com/2021/12/02/面试总结复盘/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.