Eloquent JavaScript 第4版(2024)
总体评价与影响
- 被广泛称赞为许多评论者最喜欢的 JavaScript 书;几位读者说它“教会了我 JavaScript”,或者是他们对计算机科学的第一次真正入门。
- 被认为更适合已经掌握一些编程知识、想深入学习 JS 的人,而不是作为第一本编程书的最佳选择。
- 常与其他资源一起推荐,例如“你不知道的 JavaScript”、“JavaScript.info”,以及各种“impatient”/“deep” 风格的 JS 书。
- 一些读者并不特别喜欢作者的个人风格,但仍然认为这本书极其有价值。
JavaScript 与 TypeScript 对学习者的选择
- 一派认为初学者应先学纯 JS:
- 可避免把核心语言与工具链混淆。
- 避免了过去把 DOM/浏览器怪异问题归咎于“JavaScript”的类似情况。
- TS 未来可能会变化或式微;JS 才是稳定基础。
- 另一派则建议直接从 TypeScript 开始:
- 被描述为业界许多领域的事实标准。
- 任何 JS 都是合法的 TS,类型推断还能把语法负担降得很低。
- 对重构和大型项目有很强的好处。
- 也有人担心 TS 会让新手误解运行时类型;运行时校验库(例如 schema/parse 库)被提到是重要补充。
第 4 版更新与形式
- 被描述为“根据 2024 年的现实进行了调整”,整体也更加打磨完善。
- 提到的技术更新包括:私有字段(
#)、Node 中的 ESM 导入、Object.hasOwn、用**代替Math.pow,以及更多关于生成器和 async 的内容。 - 有几个人询问清晰的变更日志;也有人指向 GitHub 上第 3 版与第 4 版之间的差异。
- 在线版本是免费且开源的;印刷版计划中,但尚未推出。
概念性解释:变量、异步、错误
- 关于把变量解释为“绑定”(指向值的名字)而不是“盒子”的长讨论:
- 支持者认为“绑定”更符合规范,对基础类型和对象都能统一适用,是更好的抽象。
- 怀疑者担心这一术语和“触手”比喻会让初学者困惑,而且“盒子”模型起步时更简单。
- 异步章节被认为在新版中尤其出色;旧版中的“乌鸦”类比被一些人认为令人困惑。
- 有评论者批评某个示例会在可预期的用户输入条件下抛出异常,主张使用明确的 Result 风格返回对象和错误码;也有人为带错误码的异常与向上传播这一模式辩护,认为这是可接受的。
讨论到的 JavaScript 语言细节
- 多条评论涉及数字与整数运算:
- 说明传统 JS
Number是浮点数;如今也有 BigInt 和类型化数组可用于整数场景。 - 有人指出 BigInt 的实现可以在渐近意义上很快。
- 说明传统 JS
- 还有关于强类型与弱类型、运行时与编译时保证,以及类型系统在 API 边界上的局限性的旁支讨论。
学习资源与学习习惯
- 许多读者分享了从技术书籍中学习的策略:主动做笔记、做练习、手写示例、间隔重复,以及把在线交互版当作“读–写代码–再读–再写代码”的工作流。