JavaScript 知识体系范式(标准化架构)
一、核心范式框架
graph TD
A[JavaScript知识体系] --> B[文法层]
A --> C[语义层]
A --> D[运行时层]
B --> B1[词法]
B --> B2[语法]
C --> C1[静态语义]
C --> C2[动态语义]
D --> D1[类型系统]
D --> D2[执行模型]
D --> D3[内存管理]
二、分层标准定义
-
文法层(Syntax)
- 词法单元
- 字符集/编码
- Token分类(关键字/标识符/字面量等)
- 词法上下文(ASI规则等)
- 语法结构
- 表达式语法
- 语句结构
- 模块语法
- 词法单元
-
语义层(Semantics)
类型 检查时机 示例概念 静态语义 编译时 TDZ/变量提升/类型注解 动态语义 运行时 原型链/this绑定/类型转换 -
运行时层(Runtime)
flowchart LR R[Runtime] --> T[类型系统] R --> E[执行模型] R --> M[内存管理] T --> T1[原始类型] T --> T2[对象类型] T --> T3[类型转换] E --> E1[调用栈] E --> E2[事件循环] E --> E3[作用域链] M --> M1[GC机制] M --> M2[闭包存储] M --> M3[内存泄漏]
三、知识点文件管理Demo
js-knowledge/
├── 文法层/
│ ├── 词法/
│ │ ├── 标识符规则.md
│ │ ├── 字面量/
│ │ │ ├── 模板字符串.md
│ │ │ └── 正则表达式.md
│ │ └── 运算符优先级表.json
│ └── 语法/
│ ├── 语句/
│ │ ├── for...of迭代.md
│ │ └── try...catch.md
│ └── 模块/
│ ├── import映射.md
│ └── 动态导入.md
│
├── 语义层/
│ ├── 静态语义/
│ │ ├── 作用域链图示.drawio
│ │ └── 类型推断案例.ts
│ └── 动态语义/
│ ├── 原型链/
│ │ ├── class继承.md
│ │ └── __proto__图示.png
│ └── this绑定/
│ ├── 箭头函数对比.js
│ └── apply-call-bind.md
│
└── 运行时层/
├── 类型系统/
│ ├── 原始类型/
│ │ ├── BigInt特性.md
│ │ └── Symbol唯一性.md
│ └── 类型检测/
│ ├── typeof局限.md
│ └── instanceof原理.md
├── 执行模型/
│ ├── 事件循环/
│ │ ├── 任务队列模型.png
│ │ └── 微任务执行时机.md
│ └── 作用域/
│ ├── 闭包案例.js
│ └── 块级作用域.md
└── 内存管理/
├── GC算法/
│ ├── 标记清除.md
│ └── 分代回收.md
└── 内存分析/
├── 快照对比工具.md
└── 常见泄漏模式.md
四、维护规范
-
文件命名标准
- 概念定义:
概念名.md
(如闭包.md
) - 对比类:
概念1_vs_概念2.md
(如call_apply_bind对比.md
) - 图示类:
功能-描述.扩展名
(如原型链-继承关系.drawio
)
- 概念定义:
-
**内容模板示例
# [标题:概念名称]
## 所属层级
`文法层/语法/语句`
## 核心特征
- 语法形式:`[代码示例]`
- 编译时行为:`[如变量提升等]`
- 运行时行为:`[如执行顺序等]`
## 典型场景
```javascript
// 示例代码(需注释说明关键点)
边界情况
- 与[相似概念]的区别
- 严格模式下的变化
相关规范
- [ECMAScript标准条款]
- [兼容性表格]
#### 五、验证工具
1. 架构完整性检查表:
- [ ] 新特性可明确归入某一层级
- [ ] 每个叶节点有具体技术点对应
- [ ] 层间交互有明确文档说明(如文法到运行时的转换)
2. 示例验证:
```mermaid
flowchart LR
TopLevelAwait --> 文法层/语法/模块
TopLevelAwait --> 运行时/执行模型/微任务
该范式体系通过:
- 横向分层保证逻辑完备性
- 纵向细分维持可扩展性
- 文件化管理实现知识沉淀
- 标准化模板确保信息质量