如果你现在的 JavaScript 水平还停在 var 声明变量、用 function 写回调、靠 prototype 拼继承,那这门课就是冲着你来的。ES6 到 ES10 不是"新语法合集",而是把 JS 从一门凑合能用的脚本语言,改造成了能撑大型前端工程的工具。缺口在哪,课就从哪补。

先自查:这几个地方卡住过没有

  • 看别人代码里一堆 const、箭头函数、解构赋值,语法认得,但说不清为什么这里必须用 let 而不是 var。
  • 写异步只会 setTimeout 套回调,Promise 的 then 链一长就理不清执行顺序,async/await 只会抄模板。
  • 数组操作还在 for 循环里 push,map、filter、reduce 能看懂但不敢在业务里用。
  • 模块化只会 script 标签堆文件,import/export 的默认导出和具名导出混着用就报错。
  • ES2020 之后的可选链、空值合并、动态 import 听过没用过。

中两条以上,说明你缺的不是"再学一遍 JS",而是把新语法和真实场景对上号。这门课按 ES 版本递进讲,正好适合按版本号查漏。

这门课真正要解决的能力缺口

核心是把语法点放回它被发明出来的理由里。let/const 解决的是变量提升和作用域污染,对应的是你调试时"明明没赋值怎么就变了"的怪事;解构和展开运算符解决的是数据搬运的啰嗦,对应你从接口拿回嵌套对象时一层层点属性的痛苦;模板字符串、箭头函数的 this 绑定、默认参数,都是为了让回调写起来不再拐弯抹角。

再往上是 ES6 之后的异步主线:Promise 的状态机和错误冒泡,async/await 的等价改写,再到 ES2018 的 for await...of 处理异步迭代。这条线不弄明白,前端工程化里的请求封装、加载态管理基本没法自己写。

最后是模块化和 ES2020/ES2021 的实用补充:模块的静态分析特性决定了打包工具怎么摇树,可选链和空值合并决定了你处理后端不靠谱字段时能少写多少防御代码,BigInt、globalThis、String.replaceAll 这些零散点,面试和读源码时都会撞上。

配套练习怎么用

语法课最怕只看不写。建议每学完一个版本,做三件事:把旧代码里对应的老写法改写一遍,比如把 var 循环改 let、把回调改 Promise 再改 async;用 reduce 重写一次自己项目里的数组统计逻辑;把一段多文件 script 引用改成 import/export 并跑通。章节笔记适合在你改完代码后对照,看自己漏了哪个边界情况,比如 const 声明的对象为什么还能改属性、箭头函数为什么不能当构造函数。

看完应该能回答的问题

  • for 循环里用 var 和 let 注册事件,输出结果为什么不同?
  • Promise.all 和 Promise.race 分别适合什么场景,其中一个 reject 会怎样?
  • async 函数里 return 一个值,和 return Promise.resolve 有区别吗?
  • import 的具名导出在编译阶段能确定吗,这跟 tree-shaking 什么关系?
  • a?.b?.c 和 a?.b.c 在 a.b 为 null 时行为一样吗?

能把这些讲清楚,再去看 Vue 或工程化配置,才不会觉得是在背 API。这门课不是从零教你 JS,是把你手里那套旧写法逐条升级到能读现代前端代码的程度。


image.webp 下载附件   保存到相册 2025-6-21 23:52 上传

课程推荐

《再学JavaScript ES(6-10)全版本语法大全》image.webp 下载附件   保存到相册 2025-6-21 23:52 上传【技能收获】学完可掌握:Vue / 前端工程化。课程以实战为导向,覆盖从基础概念到完整项目落地的关键步骤,配套章节笔记便于课后复盘与面试前快速回顾。【学习建议】建议按目录顺序学习,先打基础再进入综合实战章节;每完成 2~3 节可结合笔记整理一份学习小结,最终尝试独立复现一套完整 Demo 写入个人作品集。【就业发展】可面向岗位:Linux 运维工程师、SRE、云计算工程师、DevOps 工程师。云原生与自动化运维仍是企业 IT 刚需方向,认证 + 实战项目组合能显著提升面试通过率,适合向中高级运维或架构岗进阶。 若你已有一定编程或运维基础,本课程可帮助你在现有技能栈上快速叠加热门方向能力,提升求职时的项目说服力与薪资谈判空间。

视频目录(80 节)

*   1-1 课程导学  (1130).mp4

*   1-2 电子书位置  (0055).mp4

*   1-3 环境准备  (1311).mp4

*   2-1 作用域(1)  (1701).mp4

*   2-2 作用域(2)  (1632).mp4

*   2-4 let&const  (0710).mp4

*   2-6 ES5中数组有多少种遍历的方法?  (2118).mp4

*   2-7 ES6中数组有多少种遍历的方法?  (0952).mp4

*   2-8 Array.from(如何将伪数组转换成数组?)  (1802).mp4

*   2-9 Array.of-fill(如何生成新数组?)  (1118).mp4

*   2-10 Find&FindIndex(如何查找数组?)  (1317).mp4

*   2-12 Class基础语法(怎么声明一个类?)  (2529).mp4

*   2-13 Setter&Getter(如何读写属性?)  (1435).mp4

*   2-14 Static Methods(如何操作方法?)  (1405).mp4

*   2-15 Sub Classes(如何继承一个类?)  (1923).mp4

*   2-17 Default Parameters(函数参数的默认值)  (2039).mp4

*   2-18 Rest Parameter(怎么处理不确定参数?)  (0958).mp4

*   2-19 Spread Operator(rest参数的逆运算)  (0558).mp4

*   2-20 Arrow Functions(箭头函数)  (1717).mp4

*   2-22 Object Property  (1012).mp4

*   2-23 Set数据结构  (1239).mp4

*   2-24 Map数据结构  (1939).mp4

*   2-25 Object.assign(对象拷贝)  (1212).mp4

*   2-27 Regexp Sticky(y修饰符)  (0924).mp4

*   2-28 Regexp Unicode(u修饰符)  (2201).mp4

*   2-30 String(字符串拼接问题)  (2045).mp4

*   2-32 Array Destructure(解构赋值)  (1708).mp4

*   2-33 Array Destructure(解构赋值)  (1552).mp4

*   2-34 Object Destructrue(解构赋值)  (1755).mp4

*   2-36 Callback(异步操作)  (1911).mp4

*   2-37 Promise(异步操作)  (1158).mp4

*   2-38 Then(异步操作)  (1615).mp4

*   2-39 Resolve & Reject(异步操作)  (0555).mp4

*   2-40 Catch(异步操作)  (0508).mp4

*   2-41 All(异步操作)  (0629).mp4

*   2-42 Race(异步操作)  (1013).mp4

*   2-44 Reflect.apply(反射机制)  (1051).mp4

*   2-45 Reflect.construct(反射机制)  (1058).mp4

*   2-46 Reflect.getOwnPropertyDescriptor(反射机制)  (1827).mp4

*   2-48 proxy basic syntax(该怎样使用代理功能)  (0720).mp4

*   2-49 Schema Validation(1)  (1026).mp4

*   2-50 Schema Validation(2)  (1050).mp4

*   2-51 Schema Validation(3)  (1552).mp4

*   2-52 Revocable Proxy  (0839).mp4

*   2-54 Generator(如何让遍历“停”下来)  (1005).mp4

*   2-55 Syntax(1)  (1802).mp4

*   2-56 Syntax(2)  (0825).mp4

*   2-57 Scene Pratice  (2015).mp4

*   2-59 Iterator(如何让不支持遍历的数据结构“可遍历”)  (0844).mp4

*   2-60 Iterator  (1442).mp4

*   2-61 Generator  (1716).mp4

*   2-63 Export Import(如何把代码进行模块化设计)  (1222).mp4

*   2-64 Export Import(2)  (1238).mp4

*   2-65 Export Import(3)  (0925).mp4

*   3-1 includes+pow(数组中如何判断元素是否存在)  (0427).mp4

*   4-1 AsyncAwait(有没有比Promise更优雅的异步方式)  (2023).mp4

*   4-2 Object keys.values.entries(新增对Object快速遍历的方法,了解下?)  (1021).mp4

*   4-3 String Padding(对String补白的方式)  (0755).mp4

*   4-4 Object.getOwnDescriptor(如何获取Object数据的描述符)  (1238).mp4

*   5-1 For await of(异步操作集合是如何遍历的)  (1149).mp4

*   5-2 For await of(2)  (1105).mp4

*   5-3 Promise.finally(Promise是如何“兜底”操作的)  (0732).mp4

*   5-4 Object.rest.spread(新增Object的Rest和Spread方法)  (0849).mp4

*   5-5 RegExp-dotAll  (0659).mp4

*   5-6 RegExp-named captured groups(命名分组捕获)  (0732).mp4

*   5-7 RegExp-lookbehind  assert(后行断言)  (0951).mp4

*   6-1 ES10新增知识点(1)  (1813).mp4

*   6-2 ES10新增知识点(2)  (1248).mp4

*   6-3 ES10新增知识点(3)  (1510).mp4

*   7-1 vue项目安装  (1740).mp4

*   7-2 vue 指令  (0815).mp4

*   7-3 异步操作 Promise  (2247).mp4

*   7-4 desctructing解构赋值  (0944).mp4

*   7-5 字符串应用  (0852).mp4

*   7-6 代理 Proxy  (1912).mp4

*   7-7 自定义遍历  (2330).mp4

*   8-1 webpack  (2436).mp4

*   8-2 babel  (0741).mp4

*   8-3 eslint  (1631).mp4

*   9-1 课程总结  (0434).mp4

课程目录

第1章 课程介绍&环境搭建
第2章 ECMAScript2015(ES6)之必备知识
第3章 ECMAScript2015(ES6)之新特性
第4章 ECMAScript2015(ES6)之异步编程与模块化
第5章 ECMAScript2016(ES7)之数组&数值拓展
第6章 ECMAScript2017(ES8)之异步编程&对象拓展
第7章 ECMAScript2018(ES9)之异步迭代&对象操作升级
第8章 ECMAScript2019(ES10)之效率再提升
第9章 ECMAScript2020(ES11)之新特性初探
第10章 ES新特性在Vue实战中的应用
第11章 Webpack构建环境
第12章 课程回顾