- 02-variables.js: undefined/null/NaN typeof cheat-table; full null
section (independent primitive = 'intentional empty', === null to test,
typeof null bug, placeholder use); cross-ref var pitfall to ch10
- 07-objects.js: add §0 on what an object really is (primitive vs object
camps; arrays/functions are objects — you can attach props)
- 10-functions.js: add hoisting/TDZ section (why names are registered but
not touchable; var silent-undefined vs const/let TDZ error) + runnable
demo; reword 锚点 to plainer phrasing
- my-mistakes.md: same 锚点 rewording in entry N
- 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
- 10-functions.js: functions chapter (declaration/expression, arrow,
default params, return, scope, functions-as-values); arrow-return
explained anchor-first (=> expects an expression); object-return
needs () with a note on why it's silent (label statement)
- 09-loops.js: add label (break/continue outer) — the real feature
behind the 'name:' collision that bites arrow object-return
- my-mistakes.md: N (block doesn't produce a value, so {} needs return)
and O (arrow object-return needs parens); both are silent undefined
- teach the underlying mechanism, not a bare rule; lead with the anchor
sentence and let rules fall out as consequences
- worked example: arrow body & return anchored on '=> expects an
expression' (user corrected an earlier {-first draft)
- prefer running code to show the real error/output
- pull async/promises forward (was ch18): every LLM call is async,
it's the core of any agent
- add modules (import/export), a TS track, and an agent-domain +
pi-hands-on tier
- defer browser topics (regex/DOM/events/web-storage) as pi is a
Node CLI/TUI, not a browser app
- 09-loops: finish exercises A-F
- 00-concepts: add semicolons-and-asi.md (when ; is mandatory: line
starting with ( or [, no newline after return/throw)
- README: index the new concept note
- 08-sets-maps: correct 'object order not guaranteed' -> objects keep
insertion order except integer-like keys (reordered ascending); this
is the real reason to prefer Map when numeric keys must stay ordered
- 05-conditionals: soften 'only 6 falsy values' (note 0n/-0 exist)
- 04-strings: annotate expected output for immutable string[0]='x'
(silent in sloppy mode, TypeError in strict/ESM)
- 04-strings: reword exercise C hint to direction-only (no full answer)
- 09-loops: fix typo in for...in comment
- flat single-file structure: NN-topic.js per topic (concepts as
comments + demo + exercises in one file), replacing the old
NN-topic/ folder with separate notes.md + practice.js
- 00-concepts/ cross-topic notes (mistakes log, call-forms,
value-vs-reference, shortcircuit bash-vs-js)
- move quokka_playground.js from repo root into js_notes/
- add project CLAUDE.md
Added 23-30 day range for the Turkish translation of the tutorial.
With this change, I added the 23-30 day range to the Turkish translation of the tutorial.