第 1 章 什么是JavaScript

JavaScript在浏览器中由ECMAScript语言、DOM文档接口与BOM浏览器接口共同构成,三者版本与责任不能混为一谈。

直觉:先画执行与所有权

JavaScript在浏览器中由ECMAScript语言、DOM文档接口与BOM浏览器接口共同构成,三者版本与责任不能混为一谈。 真正的难点不是让一次示例得到预期输出,而是让绑定、对象、任务、权限和资源在异常、取消、重复与版本切换后仍可解释。先预测:若只保存最终截图,最可能隐藏哪一种陈旧状态?

权威目录定位

本页依据 Wiley 第4版官方31页目录样章与中文版公开完整目录锁定范围。目录名称用于一对一追踪,正文为独立教学重构;新浏览器差异、安全与可观察性补充会明确披露:

  • 1.1 简短的历史回顾
  • 1.2 JavaScript实现
  • 1.2.1 ECMAScript
  • 1.2.2 DOM
  • 1.2.3 BOM
  • 1.3 JavaScript版本
  • 1.4 小结

本页逐项覆盖 7 个公开目录条目,并纳入正常、边界、失败和恢复验收。

核心概念与所有权

、、、、。 每个概念都要回答:谁创建输入,状态保存在哪里,哪个任务或版本可修改它,结束后由谁清理。

#概念工程含义
1ECMAScript由ECMA-262定义的语言语法、类型、语句、关键字与标准内置对象规范。
2DOM把HTML或XML文档表示为可编程节点树的文档对象模型。
3BOM由浏览器暴露窗口、位置、历史、导航器等宿主能力的对象模型。
4宿主环境承载JavaScript引擎并提供语言规范之外API的运行环境。
5实现一致性引擎与宿主对标准特性的语义和边界保持可验证兼容的程度。

机制拆解

1. 三层责任图

ECMAScript决定变量、函数和对象语义;DOM决定如何读取与修改文档;BOM提供窗口和浏览器级能力。遇到问题先判断它属于语言、文档还是宿主,才能找到正确规范和兼容边界。

先预测:若省略这一层,哪个绑定、任务、权限或资源会先偏离?

2. 版本名不能替代能力证据

浏览器声称支持某个版本,不代表每项特性都完整且无缺陷。代码应围绕所需语义做能力检测,并在测试矩阵中记录引擎版本、文档模式和安全上下文。

先预测:若省略这一层,哪个绑定、任务、权限或资源会先偏离?

3. 历史解释兼容负担

JavaScript从网页脚本成长为通用语言时保留了大量早期行为。理解标准化、DOM演进和BOM事实标准的来源,有助于区分必须兼容的语义与已经不应采用的旧模式。

先预测:若省略这一层,哪个绑定、任务、权限或资源会先偏离?

六阶段证据链

可操作链条是:识别运行环境 → 区分语言与宿主 → 查询标准版本 → 检测实际能力 → 构造降级路径 → 跨浏览器签发。正常样本证明能力,边界样本证明预算,失败样本证明拒绝,恢复样本证明任务、状态和资源重新收敛。

最小可运行实验

以下代码用于独立观察本页机制;生产实现还需加入输入验证、兼容策略、权限、取消与清理。

const capability = {
  language: typeof Symbol === "function",
  dom: !!document.querySelector,
  bom: "history" in window,
};
console.table(capability);

证据记录把目录、运行时与状态摘要放在一起:

book: JavaScript高级程序设计(第4版)
page: jpg-01-what-is-javascript
official_entries: 7
sample: normal | boundary | failure | recovery
browser_version: fixed
input_fixture: fixed
first_divergence: null
cleanup_complete: true

故障脚本一次只改变一个变量:

baseline -> inject(exception | cancel | duplicate | denied | stale-cache)
observe -> stop_at_first_divergence
recover -> replay_same_runtime_and_input
assert -> one_state_owner && stable_output && no_stale_task && no_resource_leak

常见误区与故障注入

验收矩阵

样本输入与环境变化预期状态通过条件
正常合法输入、权限、顺序与版本六阶段完成输出和状态摘要一致
边界空值、极限容量、重复事件或慢任务达到预算不越界主线程与内存有界
失败异常、取消、拒权、断网或旧产物首偏离点停止明确传播、回滚或降级
恢复修复后重放同一输入收敛到正常轨迹无陈旧任务、监听器和资源泄漏

本页签发不变量是:语言、DOM和BOM责任可区分;所需能力以运行证据确认;不支持时有明确降级。 单次成功、平均耗时或最终截图不能替代运行时版本、执行轨迹、首偏离点与清理证据。

练习

小结

  • ECMAScript:由ECMA-262定义的语言语法、类型、语句、关键字与标准内置对象规范。
  • DOM:把HTML或XML文档表示为可编程节点树的文档对象模型。
  • BOM:由浏览器暴露窗口、位置、历史、导航器等宿主能力的对象模型。
  • 宿主环境:承载JavaScript引擎并提供语言规范之外API的运行环境。
  • 实现一致性:引擎与宿主对标准特性的语义和边界保持可验证兼容的程度。
  • 六阶段机制链已经映射到正常、边界、失败与恢复证据。
  • 官方目录逐项追踪,现代补充不会冒充原书正式分节。

术语表

来源与改编边界

讨论

评论区加载中…