这门课解决什么问题

写 JavaScript 遇到过这样的场景吗:明明逻辑没报错,但闭包拿到的循环变量总是不对;数组排序结果莫名其妙;或者遇到 NaN、Infinity 参与计算时,输出结果完全偏离预期。这门课不教怎么搭框架、做页面,它专门处理这些让人疑惑的边界细节。日常开发里,很多隐蔽的缺陷并非来自业务逻辑本身,而是对语言底层的运行机制存在误解。课程把日常高频踩坑的点,比如自动分号插入、作用域链、垃圾回收机制等单独拎出来剖析。它解决的是代码能跑但不知道为什么能跑、改一处崩一片的隐患问题,帮你把似懂非懂的概念彻底理清。

适合什么基础与资料怎么用

这套资料不适合零基础入门者。如果你连变量声明、基础函数调用都还在摸索阶段,直接看会非常吃力。它默认你已经能独立写页面交互,至少有一年左右的实际编写经验,遇到了实际困惑需要解惑。建议先把语言基础这一大块过一遍,尤其是闭包、作用域和错误处理这几节,这是日常排错的核心。配合资料练习时,不要只用眼睛看,每讲到一个疑难杂症,立刻打开本地编辑器复现一次。比如讲到剩余与展开运算符,就自己写几个不同层级的对象拷贝去对比结果。讲到迭代器,就手动实现一遍。只有动手跑出那些反直觉的输出,才算真正吃透。

学完能独立做什么

学完之后,你不会立刻变成架构师,但在排查复杂缺陷时会有质的改变。面对老旧项目里晦涩的函数柯里化或生成器代码,你能快速看懂其意图并安全修改。遇到内存泄漏导致页面卡顿,你能通过垃圾回收机制的知识点定位到未清除的全局引用。更重要的是,写新代码时你会主动避开那些隐蔽的坑,比如不再滥用类型转换,处理数组搜索时清楚边界情况。这门课帮你把 JavaScript 从会用提升到知其所以然,写出更稳健、可维护的业务代码。


本课程我们将一起学习 JS那些令人疑惑的问题,学习这些知识能够帮助我们对JS的认识有更近一步的提高。

课程目录

*   01 JS的疑难杂症——课程介绍/

  *   01 课程介绍

*   02 JS的疑难杂症——语言基础/

  *   01 语言基础——null&undefined

  *   02 语言基础——函数作用域&块级作用域

  *   03 语言基础——自动分号插入机制

  *   04 语言基础——剩余运算符&展开运算符

  *   05 语言基础——infinity&-infinity

  *   06 语言基础——关于NaN

  *   07 语言基础——箭头函数

  *   08 语言基础——闭包

  *   09 语言基础——函数柯里化

  *   10 语言基础——迭代器和可迭代对象

  *   11 语言基础——生成器函数

  *   12 语言基础——内存管理和垃圾回收

  *   13 语言基础——错误处理

*   03 JS的疑难杂症——数组/

  *   01 数组——数组搜索

  *   02 数组——map方法的作用

  *   03 数组——数组扁平化

  *   04 数组——数组排序

  *   05 数组——数组解构

*   04 JS的疑难杂症——字符串/

  *   01 字符串——字符串提取

  *   02 字符串——大小写转换及替换

*   05 JS的疑难杂症——面向对象/

  *   01 面向对象——对象字面量

  *   02 面向对象——this对象

  *   03 面向对象——类&类表达式&静态成员

  *   04 面向对象——call&apply&bind方法

  *   05 面向对象——继承和扩展内置类

  *   06 面向对象——解构对象字面量

*   06 JS的疑难杂症——模块/

  *   01 模块——什么是模块

  *   02 模块——命名导入/导出

  *   03 模块——默认导入/导出

*   07 JS的疑难杂症——DOM和Web/

  *   01 DOM和Web——文档对象和窗口对象区别

  *   02 DOM和Web——定时器事件

  *   03 DOM和Web——事件冒泡和事件捕获

  *   04 DOM和Web——事件代理/事件委托

*   08 JS的疑难杂症——防抖和节流/

  *   01 防抖和节流——什么是防抖和节流

  *   02 防抖和节流——防抖和节流的区别

  *   03 防抖和节流——节流函数

  *   04 防抖和节流——防抖函数

  *   05 防抖和节流——节流场景应用

  *   06 防抖和节流——防抖场景应用

*   09 JS的疑难杂症——异步JavaScript/

  *   01 异步JavaScript——什么是回调函数

  *   02 异步JavaScript——什么是Promise

  *   03 异步JavaScript——all&allSettled&r

  *   04 异步JavaScript——async/await

*   10 JS的疑难杂症——ES6数据结构/

  *   01 ES6数据结构——map

  *   02 ES6数据结构——set

  *   03 ES6数据结构——WeakMap&WeakSet

*   11 JS的疑难杂症——JS调试/

  *   01 JS调试——调试和开发者工具

  *   02 JS调试——开发者工具

  *   03 JS调试——JS代码调试

  *   04 JS调试——代码行/事件监听器断点

  *   05 JS调试——条件代码行断点

  *   06 JS调试——DOM更改断点

  *   07 JS调试——XHR/fetch断点

  *   08 JS调试——异常断

  *   09 JS调试——console对象及方法

  *   10 JS调试——console对象及方法