菜单

概述

相关源文件

本文档全面概述了“你不知道的 JavaScript”(YDKJSY)系列书籍,深入探讨了 JavaScript 语言的机制、模式和最佳实践。YDKJSY 旨在帮助开发者从根本上理解 JavaScript,超越简单的语法和框架使用,专注于 JavaScript 之所以如此运行的原因。

有关类型和类型转换系统的具体信息,请参阅类型与语法。有关面向对象模式的详细信息,请参阅对象与类。有关词法作用域和闭包的内容,请参阅作用域与闭包

书籍系列结构与组织

YDKJSY 系列共有六本书,以循序渐进的学习路径组织,旨在从基础构建对 JavaScript 的全面理解。

书籍系列结构图

该系列以渐进方式组织,但第 2-4 本书(涵盖三个核心支柱)可根据读者的兴趣以任何顺序阅读。

书籍标题状态重点领域
入门已完成JavaScript 基础知识和三大支柱介绍
作用域与闭包已完成第一支柱:词法作用域、闭包和模块
对象与类草稿稳定版第二支柱:面向对象模式、原型和 this
类型与语法进行中第三支柱:值类型和类型转换
同步与异步未开始流程控制和异步编程
ES.Next 及未来未开始未来的 JavaScript 功能和演进

来源:README.md12-21 get-started/ch4.md106-126

JavaScript 的三大支柱

YDKJSY 系列围绕构成语言核心的三个基本支柱来组织 JavaScript 知识。理解这些支柱对于精通 JavaScript 至关重要。

JavaScript 的三大核心支柱

支柱 1:作用域和闭包

将变量组织成作用域单元(函数、块)构成了程序行为方式的基础。JavaScript 使用词法作用域,其中变量访问是在作者时间根据函数和块在代码中的位置确定的。

主要概念包括

  • 词法作用域和变量可见性规则
  • 提升和 var/let/const 的函数作用域与块作用域
  • 闭包:函数记住并访问其外部作用域中的变量
  • 模块模式,用于用私有状态组织代码

来源:get-started/ch3.md169-266 get-started/ch4.md12-32

支柱 2:原型

JavaScript 的对象系统建立在原型链接的概念之上——对象可以通过原型链将行为委托给其他对象。

主要概念包括

  • this 关键字和动态上下文绑定
  • 用于属性/方法委托的原型链
  • 使用 Object.create() 进行对象链接
  • 构造函数和 new 操作符
  • ES6 class 语法作为原型的语法糖
  • 行为委托作为类继承的替代方案

来源:get-started/ch3.md341-468 get-started/ch4.md35-49

支柱 3:类型和强制转换

JavaScript 的类型系统是动态的,但仍然遵循开发者需要理解的特定规则。

主要概念包括

  • 原始类型(字符串、数字、布尔值、null、undefined、symbol、bigint)
  • 对象类型(普通对象、数组、函数等)
  • 不同类型之间的类型转换(隐式转换)
  • 相等比较(=====
  • 常见的隐式转换模式和陷阱

来源:get-started/ch2.md379-514 get-started/ch4.md52-68

代码库和代码组织

YDKJSY 代码库的结构旨在为在线阅读和出版组织书籍内容。

存储库结构

每个书籍目录都遵循类似的结构,包含:

  • README.md - 书籍介绍和导航
  • toc.md - 目录
  • 章节文件(ch1.md、ch2.md 等)
  • 附录文件(apA.md、apB.md 等)
  • 支持素材,如图片

来源:README.md1-65 get-started/README.md1-21 get-started/toc.md1-46

发布和访问模式

YDKJSY 系列通过多种渠道提供:

  1. 免费在线访问:所有内容均可直接从 GitHub 代码库免费阅读。
  2. 已出版书籍:可通过以下渠道购买:
    • Leanpub(电子书/PDF)- 由 GetiPub 出版社自行出版
    • 亚马逊(实体书/Kindle)

这些书籍由 Frontend Masters 赞助,后者还提供由作者讲授的视频培训课程,以补充书籍内容。

来源:README.md25-57

贡献和许可

YDKJSY 代码库欢迎社区的贡献,并遵循特定指南。

  • 欢迎提交改进代码片段、解释等的拉取请求。
  • 详细的贡献指南可在 CONTRIBUTING.md 中找到。
  • 资料版权归 Kyle Simpson(2019-2022)所有。
  • 内容根据知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议授权。

来源:README.md37-65

JavaScript 语言基础

该系列提供了关于 JavaScript 作为一门语言的基础知识,解决了常见的误解。

JavaScript 语言特性

JavaScript 的关键特性

  • 多范式语言:支持过程式、面向对象和函数式编程风格
  • 词法作用域:变量根据其在源代码中的位置进行解析
  • 向后兼容:多年前编写的代码在现代引擎中仍然有效
  • 编译型语言:JavaScript 被解析、编译和执行(并非纯粹的解释执行)
  • TC39 管理:语言的演进由 TC39 委员会管理,并通过 ECMA 正式化

来源:get-started/ch1.md156-176 get-started/ch1.md179-202 get-started/ch1.md313-380

学习方法

该系列倡导一种特定的 JavaScript 学习方法。

  1. 全面理解:学习语言的所有部分,而不仅仅是“好的部分”。
  2. 深度学习 vs. 浅层学习:花时间理解事物为何如此工作,而不仅仅是知道如何工作。
  3. 顺应而为:遵循 JavaScript 的设计模式,而不是与之对抗。
  4. 以实践为导向:通过代码实践应用概念(参见附录 B)。
  5. 循序渐进的学习:分散学习时间,并穿插实际应用。

来源:preface.md12-83 get-started/ch4.md71-98 get-started/apB.md1-336