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 的实现可以在渐近意义上很快。
  • 还有关于强类型与弱类型、运行时与编译时保证,以及类型系统在 API 边界上的局限性的旁支讨论。

学习资源与学习习惯

  • 许多读者分享了从技术书籍中学习的策略:主动做笔记、做练习、手写示例、间隔重复,以及把在线交互版当作“读–写代码–再读–再写代码”的工作流。