const reviewer = { name: "林晨", stage: "final-review", showTitle() { console.log(`学习营总复盘器`); // 输出总复盘标题 }, }; const lessons = [ { title: "变量", score: 80, finished: true }, { title: "闭包", score: 92, finished: true }, { title: "this", score: 87, finished: true }, { title: "补漏练习", score: null, finished: false }, { title: "综合回顾", score: 95, finished: true }, ]; let mentorNote;//undefined const reviewComment = null;//null function getStageText(stage) { // 用 switch 返回阶段说明 switch (stage) { case 'final-review': console.log('已学习'); break case 'ing-review': console.log('学习中'); break case 'start-review': console.log('未学习'); break default: console.log('状态未知'); break } } reviewer.showTitle() console.log(mentorNote, reviewComment); const lessons1 = [] for (let i = 0; i < lessons.length; i++) { if (lessons[i].score != null) { lessons1.push(lessons[i]) } } const sum = lessons.reduce((acc, item) => { return acc + item.score }, 0) console.log("总分:" + sum); console.log(`平均分:${sum / lessons.length}`); const reviewerAlias = reviewer reviewerAlias.stage = 'ing-review' console.log(reviewer.stage, reviewerAlias.stage); // 任务: // 1. 调用 reviewer.showTitle() // 2. 输出 mentorNote 和 reviewComment 的区别 // 3. 用 for + break 提取 lessons 中 score 有效的项目 // 4. 用高阶函数统计课程标题、完成状态和平均分 // 5. 创建 reviewerAlias 指向 reviewer,修改 stage,观察原对象是否变化 // 6. 输出最终结果 /* 一个带方法的 `reviewer` 对象 - 一个 `lessons` 数组 - 一个用 `switch` 输出阶段说明的函数 - 一个用 `for + break` 清洗有效数据的过程 - 至少两个数组高阶函数 - 对 `undefined` 和 `null` 的判断 - 一段对象引用变化的观察代码 - 最终输出标题、有效课程、平均分、完成状态*/