Complete 11 exercises from syntax to async, stage by stage. Each exercise runs instantly with validation feedback.
Systematically learn core JS concepts from variables to async programming
Complete exercises in order. Try each one independently first, then review with hints and solutions. This builds transferable skills.
Build syntax foundations first, then strengthen data processing, and finally complete DOM + async. Self-check at the end of each stage to ensure skills transfer to real projects.
面向零基础:先理解“变量是什么”,再学会声明字符串、数字、布尔值并打印结果。
面向初学者理解 let/const:变量为什么会“作用域错乱”,以及如何避免。
从“加减乘除”到“条件判断”,用学生熟悉的例子理解运算符。
面向新手:先学会“程序如何做决定”,再练 if/else 与三元表达式。
从“重复做一件事”出发,理解 for/forEach/map 在新手任务中的区别。
新手必修:把“重复逻辑”封装成函数,理解参数输入与返回输出。
给已会基础函数的新手做升级:把 function 写法迁移到箭头函数。
面向新手理解“不给参数也能跑”的写法,提升函数稳定性。
从“字符串拼接很乱”出发,教新手用模板字符串写出更清晰文案。
把“从对象/数组里取值”这件事简化成一行,适合新手进阶 ES6。
用“合并数组”和“不定参数求和”两个新手常见任务理解 ... 的两种角色。
把 ES6 对象语法写清楚:减少重复代码、支持动态 key,让对象构建更直观、更少拼写错误。
先把 class 当作“对象工厂”,再理解 constructor 和方法的分工。
把 generator 从抽象语法变成可操作工具:按需产出序列、筛选序列、生成步长序列。
通过搜索框和滚动加载两个真实场景,理解“什么时候用防抖、什么时候用节流”,避免只背概念。
用学生能理解的方式学习封装:为什么要隐藏内部变量、如何只暴露必要 API、怎样避免全局污染。
把“模块之间怎么通信”讲清楚:A 只发事件、B 负责监听,降低耦合并提升可维护性。
把流程控制写成可读规则:状态 + 事件 -> 下一状态,避免流程乱跳,提升可维护性。
从学生视角理解记忆化:当输入重复时不必重复计算,学会用 Map 做缓存并计算命中率。
以学生视角掌握不可变更新:数组追加、对象改字段、列表项切换,避免副作用导致状态错乱。
面向初学者:先学会“是否包含”的判断,再学会用 ** 做平方/立方,建立 ES7 的第一套实战语法感。
面向零基础:一步步学会数组 includes 与字符串 includes,理解“命中判断”在搜索、筛选里的真实用途。
面向初学者:从平方/立方开始,逐步理解 ** 和 **=,学会把公式需求转成可运行代码。
从学生视角理解“对象转数组再转回对象”的核心流程,掌握 ES8 对象工具在统计与筛选中的用法。
从“看起来乱”到“整齐可读”:学习 padStart/padEnd,让编号和名称在控制台或表格文本中对齐。
以学生视角学习 async/await:先拿到单个异步结果,再做并发加载,最后学会失败兜底,理解前端真实请求流程。
面向初学者:学习字符串大小写处理、模板字符串拼接和包含判断,建立文本处理的基础能力。
面向新手:理解数组为什么是前端高频数据结构,并通过创建、筛选、查找三个步骤建立数组思维。
从学生视角理解对象:先存用户信息,再解构读取,再合并对象,建立“现实实体 -> 代码对象”的映射思维。
从学生视角掌握数组高阶方法:先筛选再提取、再做汇总、最后做条件判断,形成前端数据处理通用套路。
从学生视角掌握 ES6 集合:先用 Set 去重,再用 Map 建字典查询,理解它们和数组/对象的区别。
从业务角度学习常见算法工具:去重排序、词频统计、榜单求和,建立可复用函数思维。
面向初学者:学习如何选中页面元素并修改文字、样式、class,理解 JavaScript 如何真实影响页面显示。
从零理解事件驱动:点击、输入、提交分别怎么监听,如何把用户动作变成页面变化。
面向新手:先理解“为什么要异步”,再一步步写 delay、await 和 try/catch,掌握前端请求最常见的代码骨架。
以学生视角学习 Promise.all:从两个异步值并发获取开始,逐步完成拼接和汇总,理解为什么并发通常比串行更高效。
用学生能跟上的方式理解异步循环:先写单个 async 转换,再用 Promise.all 批量处理,最后做结果汇总。
面向初学者:解决“字段缺失就报错”的常见问题,学会 ?. 安全访问与 ?? 默认值兜底。
从学生角度理解 try/catch 和边界校验:输入不可信时如何给出安全返回,保证页面稳定运行。