JavaScript 是前端唯一标配语言,也是 Node.js 全栈的基石。本讲从语言核心机制(原型、闭包、异步、事件循环)到现代 ES 特性与工程实践,帮你建立系统化的 JS 能力——这也是看懂任何框架的前提。
function createCounter() { let count = 0 return { inc: () => ++count, // 闭包 get: () => count } } const c = createCounter()
同样的代码换个调用方式结果就变了,面试一问就露怯,写代码也总出"神秘 bug"。
setTimeout、Promise、async/await 混在一起,输出顺序跟直觉完全相反。
功能能跑但质量堪忧:全是全局变量、没有复用、一改就崩,可维护性为零。
原型链、class 语法糖与继承模式,理解"对象 → 原型 → 原型链"。
词法作用域、闭包的原理与应用(模块模式、柯里化),及常见陷阱。
Promise、async/await、微任务与宏任务,事件循环到底怎么转。
四种 this 指向规则、箭头函数特性与绑定方法,告别"this 玄学"。
解构、可选链、展开、模块化等现代语法,写出简洁可读的代码。
事件冒泡与捕获、事件委托、虚拟 DOM 原理,前端交互的地基。
写 JS 最怕"会原理不会 API",这张表覆盖日常开发 80% 的高频操作。
| 想做什么 | 常用写法 | 要点 |
|---|---|---|
| 数组去重 | [...new Set(arr)] | 简单高效,对象去重需自定义 |
| 数组转对象 | Object.fromEntries() | 与 entries() 互逆 |
| 深拷贝 | structuredClone(obj) | 原生支持,含循环引用 |
| 按条件分组 | arr.reduce() | reduce 是数据聚合利器 |
| 字符串补零 | String.padStart(2,'0') | 日期格式化高频用 |
| 防抖/节流 | 手写 debounce/throttle | 高频事件必备,理解原理 |
JS 是单线程语言,通过"调用栈 + 任务队列 + 微任务"实现非阻塞。setTimeout 的"零延迟"也要等当前栈清空,理解它才能解释 99% 的异步执行顺序问题。
对象是引用类型,直接赋值共享内存。需要深拷贝用 structuredClone 或递归实现,注意循环引用与函数等特殊值。
搜索联想用防抖(停止触发后才执行),滚动监听用节流(固定频率执行),都是高频事件的性能利器。
纯函数、不可变数据、高阶函数与组合,让代码可测、可复用,是前端工程化的底层素养。
轮播、弹窗、表单校验、异步加载,一切前端动效与交互都由 JS 驱动。
掌握 JS 语言即掌握 Node 后端与全栈能力,前后端同一语言降低协作成本。
数组方法、对象操作、JSON 处理,是日常开发与数据处理的高频场景。
看懂 Vue/React 源码、编写自定义指令与插件,都依赖扎实的原生 JS。
从企业官网到业务系统,编程新知提供真实前端项目开发,边实战边成长。