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

前端八股文 - JavaScript 篇

1. 数据类型

1.1 基本数据类型

  • Number
  • String
  • Boolean
  • Null
  • Undefined
  • Symbol (ES6)
  • BigInt (ES11)

1.2 引用数据类型

  • Object
  • Array
  • Function
  • Date
  • RegExp

1.3 类型判断

  • typeof:可以判断基本类型(除null返回object外)
  • instanceof:判断引用类型
  • Object.prototype.toString.call():最准确的类型判断方法
  • Array.isArray():判断数组

2. 作用域与闭包

2.1 作用域

  • 全局作用域
  • 函数作用域
  • 块级作用域(ES6 let/const)

2.2 闭包

  • 定义:函数和其周围状态(词法环境)的引用捆绑在一起形成闭包
  • 特点:
    • 可以访问外部函数作用域中的变量
    • 外部函数执行完毕后,内部函数仍能访问其变量
  • 应用场景:
    • 模块化
    • 私有变量
    • 函数柯里化
    • 防抖节流

3. 原型与继承

3.1 原型链

  • 每个对象都有__proto__属性指向其构造函数的prototype
  • 查找属性时沿着原型链向上查找

3.2 继承方式

  1. 原型链继承
  2. 构造函数继承
  3. 组合继承
  4. 原型式继承
  5. 寄生式继承
  6. 寄生组合式继承(最优)
  7. ES6 class继承

4. this指向

4.1 绑定规则

  1. 默认绑定:全局或undefined(严格模式)
  2. 隐式绑定:对象方法调用
  3. 显式绑定:call/apply/bind
  4. new绑定:构造函数

4.2 优先级

new绑定 > 显式绑定 > 隐式绑定 > 默认绑定

4.3 箭头函数

  • 没有自己的this,继承外层函数调用的this
  • 不能作为构造函数
  • 没有arguments对象

5. 异步编程

5.1 回调函数

  • 回调地狱问题

5.2 Promise

  • 三种状态:pending、fulfilled、rejected
  • 方法:
    • then()
    • catch()
    • finally()
    • all()
    • race()
    • allSettled()
    • any()

5.3 Generator

  • function*
  • yield
  • next()

5.4 Async/Await

  • 语法糖
  • 错误处理用try/catch

6. ES6+新特性

6.1 常用特性

  • let/const
  • 箭头函数
  • 模板字符串
  • 解构赋值
  • 默认参数
  • 剩余参数
  • 扩展运算符
  • 对象属性简写
  • Promise
  • Class
  • Module

6.2 新增API

  • Array: find/findIndex/includes/flat
  • Object: assign/keys/values/entries
  • String: startsWith/endsWith/includes/padStart/padEnd
  • Set/Map/WeakSet/WeakMap

7. 事件循环

7.1 执行机制

  1. 同步任务进入主线程
  2. 异步任务进入Event Table并注册回调函数
  3. 当指定事件完成时,Event Table将回调移入Event Queue
  4. 主线程任务执行完毕,检查Event Queue中的回调并执行

7.2 宏任务与微任务

  • 宏任务:script、setTimeout、setInterval、I/O、UI渲染
  • 微任务:Promise.then、MutationObserver、process.nextTick
  • 执行顺序:同步任务 > 微任务 > 宏任务

8. 内存管理

8.1 垃圾回收

  • 标记清除(主流)
  • 引用计数(循环引用问题)

8.2 内存泄漏

  • 全局变量
  • 定时器未清除
  • 闭包不当使用
  • DOM引用未释放
  • 事件监听未移除

9. 常用设计模式

9.1 创建型

  • 工厂模式
  • 单例模式
  • 原型模式

9.2 结构型

  • 适配器模式
  • 装饰器模式
  • 代理模式

9.3 行为型

  • 观察者模式
  • 发布订阅模式
  • 策略模式

10. 性能优化

10.1 代码层面

  • 减少DOM操作
  • 事件委托
  • 防抖节流
  • 懒加载
  • 虚拟列表

10.2 网络层面

  • 资源压缩
  • CDN加速
  • HTTP缓存
  • 雪碧图
  • 按需加载

10.3 工具层面

  • Webpack优化
  • Tree Shaking
  • Code Splitting
  • Gzip压缩
http://www.xdnf.cn/news/13991.html

相关文章:

  • UE接口通信常见问题
  • Ubuntu下搭建Black Magic Probe (BMP) 编译环境
  • AbMole| 2-Deoxy-D-glucose(M5140;2-脱氧-D-葡萄糖)
  • 第七章接入技术
  • opencv opencv_contrib vs2020 源码安装
  • 简述Python里面search和match的区别
  • ZooKeeper详解以及应用部署(AI)
  • Spring Cache 详细介绍——补充
  • 深度解析 JuiceFS 权限管理:Linux 多种安全机制全兼容
  • JavaScript 原型(Prototype)详解
  • 金属切削机床制造企业如何破局?探索项目管理数字化转型
  • 学习STC51单片机35(芯片为STC89C52RCRC)智能小车3(PWM调速小车)
  • C++学习之虚析构函数
  • 【QT】QVariant 转换为自定义的枚举类型
  • 当机械工程师的餐桌变身实验室:立创电赛的真实创新启示录
  • 《深度优先搜索》题集
  • 结构型模式 (7种)
  • 鸿蒙期末总结
  • 高铁列车能否考虑加装飞翼?
  • 深入剖析 C++ 默认函数:拷贝构造与赋值运算符重载
  • C# TAP异步编程(Task/async/await)总结
  • VRFF: Video Registration and Fusion Framework
  • 机器学习与深度学习20-数学优化
  • 2025.06.12【3D曲线图】|用Python绘制DNA甲基化3D曲线图(以CpG位点为例)
  • 局域网内 100 台设备同屏直播技术方案
  • 【总天数两种算法相互印证正确】2022-4-13
  • flowable查询历史流程实例时条件变量的类型问题
  • 实战解析:如何用克魔(KeyMob)等工具构建iOS应用稳定性与数据可观测体系
  • 【web应用】若依框架:若依框架中的面包屑导航与顶部导航栏:设计与实现
  • 电感详解同时其主要特性参数是什么?都有涉及哪些方面?