JavaScript 进阶指南 *

* 撰写中

返回 JavaScript 学习指南 系列

# 学习 JavaScript 进阶知识

# 概览

  • 耗时:
    • 深入 JS 语言特性和编程技巧,耗时大约 60~120 小时
  • 难点:略
  • 工具:略

# 学习路线

  • 前置学习
  • 学习 JavaScript 高级特性
    • 看书、看视频 ↓,掌握下文中的提到的 JS 进阶知识体系
  • 实战
    • 刷题 ↓
  • 迷思
    • 什么是元编程
    • 什么是反射
    • 什么是运算符重载,JS 里能不能实现

# 资料

# 自学教材

# 刷题教材

同样的道理,可能会有很多重复的题,选择性跳过,建立自己的知识体系
注意到纯 JS 和 DOM 编程的题可能会混在一起,可以考虑分开刷

# JavaScript 进阶知识体系

# JavaScript 进阶概念

  • 语言特性
    • 变量
      • 基本类型 vs 引用类型、按值传递
      • 类型转换、隐式类型转换(toString/valueOf
      • 变量提升
    • 函数
      • lengthnameprototype
      • thisarguments
      • 立即执行函数表达式(IIFE)、高阶函数
      • 闭包、作用域、eval、内存泄露
      • ES6:箭头函数、剩余参数、默认参数
    • 数组
      • Array-Like(如 arguments 等)
    • 对象
      • prototypeconstructor
      • 原型链
    • ES6 对象
      • PromiseGeneratorasync
      • MapSet
      • Proxy
      • Array-Like(如 BigUint64Array 等)
    • 正则表达式
    • 前端模块化
  • 执行原理
    • 短路计算
    • IEEE754 问题
    • EventLoop
    • 垃圾回收
  • 前瞻(2020)
    • ES 新特性(含草案)
      • 动态引入:await import('lib')
      • 可选链:user?.shooping?.list
      • Nullish Coalescing:const animeTime = duration ?? 400
      • BigInt
    • Node
      • Worker Threads
      • ES module support

# JavaScript 编码素养

  • 语言精粹/毒瘤
    • 多用
      • 分号、花括号
      • ES6 新特性(解构、模板字符串)
      • 静态检查器(ESLint)、自动格式化(Prettier
    • 少用
      • 显式全局变量、未定义变量、隐式 Falsy、==
      • withevallabelswitchvoid
      • ++--
  • 提高编码技巧
    • console API
    • 对象处理、数组处理
    • async
  • 手写系列
    • 对象:组合寄生继承
    • 数组:map/filter/reducer 的 Polyfill
    • 模拟实现 new/bind/call/apply/instanceof
    • Promise
    • deepClonedeepFlatten
    • 函数:debounce/throttle
    • 集合:unique/union
    • 事件:EventEmitter/EventBus