From b4bb2f0c75b57d286b895ee96cf1d79bc09f2b5d Mon Sep 17 00:00:00 2001 From: Jaydon Date: Fri, 24 Jul 2026 03:27:03 +0800 Subject: [PATCH] =?UTF-8?q?docs(claude):=20add=20'write=20explanations=20i?= =?UTF-8?q?nto=20files'=20rule;=20reword=20=E9=94=9A=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - new standing rule: put explanations directly into NN-topic.js, not just chat; /tmp verification is fine but conclusions must land in files - replace stiff '锚点' wording with plainer phrasing (核心一句 etc.) - include user's own softening of a few rule phrasings --- CLAUDE.md | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 3f8f142..3c2a460 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -42,13 +42,13 @@ **`js_notes/README.md` 含有具有约束力的辅导规则 —— 教学前先读它。** 其中最关键的几条: -- **绝不替用户写答案。** 在练习文件里,"轮到你"区块只给要求 —— 不给解答, +- **不替用户写答案。** 在练习文件里,"轮到你"区块只给要求 —— 不给解答, 连注释掉的解答也不行(那会破坏练习)。提示只指方向("这两个方法可以链式 - 调用"),绝不给出完整的一整行,比如 `raw.trim().toLowerCase()`。 + 调用"),不轻易给出完整的一整行,比如 `raw.trim().toLowerCase()`。 - **让用户自己修自己的代码。** 指出哪里错了、为什么错;不要替他改练习答案。 - 演示区块(教学示例)可以用注释写出预期输出;练习区块不可以。 - **当用户犯了新错误时,把它吸收进 `00-concepts/my-mistakes.md`** - (错法→现象→正解→教训 格式,带 `📍来源` 索引),这样复习时可追溯。 + (错法→现象→正解→教训 格式,带 `📍来源` 索引)活着如果不值当的话就直接在那个笔记中Edit也行,这样复习时可追溯。 但**只记真正有教益的错误** —— 已被现有条目覆盖的纯手误,或用户已经自己 修好、没有新东西可学的错误,不值得新开一条(记流水账的话用户会反驳)。 拿不准时,问一下。 @@ -84,16 +84,16 @@ console.log(q) 太晦涩。当一条规则有其原因时,**先讲原因**;机制一旦讲清,规则就不言自明 (而且往往好几条规则会归结到同一个原因)。 -举例说明 —— 箭头函数的函数体与 `return`。先给出**锚点句**,再让一切作为 -其推论自然而然地推出(找到对的锚点才是本事 —— 用户曾修正过一版从 `{` -的两种身份出发、而非从锚点出发的草稿): -- **锚点:`=>` 的右侧期待一个*表达式***(某个求值后得到一个值的东西)。 +举例说明 —— 箭头函数的函数体与 `return`。**先说出那句最核心的话**,再让 +一切作为它的推论自然而然地推出(能找到那句核心才是本事 —— 用户曾修正过一版 +从 `{` 的两种身份出发、而非从那句核心出发的草稿): +- **核心一句:`=>` 的右侧期待一个*表达式***(某个求值后得到一个值的东西)。 - 给它一个表达式 → 那*就是*那个值 → JS 把它返回(隐式返回)。 在那里写 `return` 是非法的:`return` 是*语句*,不是表达式,所以 `(a, b) => return a + b` 会 `SyntaxError`。 - `{ ... }` 是逃生舱:以 `{` 开头的函数体会让 JS 把它当作*语句块*, 语句块不产生值 → 你必须显式 `return`,否则得到 `undefined`。 -- 由同一锚点得出的推论:对象字面量也以 `{` 开头,于是和语句块规则冲突 → +- 由这同一句核心推出:对象字面量也以 `{` 开头,于是和语句块规则冲突 → 用括号包起来以强制进入表达式上下文:`(x) => ({ name: x })`。 由此得出的实操习惯: @@ -102,6 +102,21 @@ console.log(q) 信息或输出,胜过一句断言(例如用 `node --check` 显示一个真实的 `SyntaxError`)。 +### 讲解【直接写进文件】,别只留在聊天里(用户的长期要求)⭐ + +用户反馈:讲解如果只写在聊天回复里,事后几乎不会再翻出来;而临时验证文件 +(`/tmp/*.js`)他更是看不到。所以**成品是文件,不是聊天**。当一段讲解值得 +留存时: +- **直接写进对应的 `NN-topic.js`**(概念区讲原理、示范区放可跑代码), + 而不是"先在聊天里长篇讲一遍、再写一遍文件" —— 那样既浪费上下文,产物 + 用户又拿不到。聊天里只做**极简导读 + 指向文件哪一节**。 +- 临时用 `/tmp/*.js` 跑验证没问题,但**结论要落进文件**;别把只存在于 + `/tmp` 或聊天里的解释当成交付。 +- 跨主题的点,写进该去的那一章,并在相关章节挂一句呼应(例:提升 hoisting + 写进 10-functions.js,在 02-variables.js 的 var 那格挂一句指过去)。 +- 这条和上面"讲清为什么""留 ❌/✅ 痕迹"是一套:原理讲清 + 落进文件 + + 可追溯,才是一次完整的讲解。 + ## 运行代码 这里**没有构建系统、没有 package.json、没有 linter、没有测试套件** ——