JavaScript 是唯一被浏览器钦定的语言;TypeScript=JavaScript 加上类型系统、跑之前先编译回 JS;VBScript 已经退场、VBA 只活在 Office 里——这一组比较的主题是【寄生在平台上的语言的生老病死】。
2-5 讲了【脚本寄生在宿主里】,本节是它的宿主家族续篇:浏览器与 Office。JavaScript 的【先编译后运行】(TypeScript)直接回收 2-1 的编译器概念;VBA 是 2-5【Office 宏】的真身。
一、JavaScript:被浏览器钦定的语言
1995 年 Netscape 的 Brendan Eich 用 10 天设计出来的语言,名字蹭 Java 的热度(实际亲缘极浅)。它的命运由一个事实决定:浏览器只原生执行 JavaScript(确切说:ECMAScript 标准)。Web 是人类最大的软件平台,于是这门【十天速成】的语言成了世界上部署量最大的语言。
- 前端:唯一选择(能编译成 JS 的语言如 TS/CoffeeScript,最终产物也是 JS);
- 后端:2009 年 Node.js 让 JS 跑进服务器(V8 引擎,回收 2-9 的 JIT);
- 无处不在:桌面(Electron:VS Code 本体)、移动(React Native)、嵌入式都有它。
语法快速样品(浏览器控制台可直接跑):
const scores = [88, 92, 79];
const good = scores.filter(s => s >= 85).map(s => s * 10);
console.log(good); // [880, 920]
二、TypeScript:给 JavaScript 穿上类型盔甲
TypeScript(微软,2012)= JavaScript + 静态类型,本质是【先编译后运行】(回收 2-1):你写带类型的 TS,编译器检查并擦掉类型、输出纯 JS,浏览器照跑不误。
function average(scores: number[]): number {
const total = scores.reduce((a, b) => a + b, 0);
return total / scores.length;
}
average([88, 92, 79]); // OK
average(["88", "92"]); // 编译期就报错——字符串不能当数字平均
JS 里这行错误要等程序跑崩了才知道;TS 在写的时候就拦住了——这就是大型项目(几百人共改一个代码库)几乎全面转向 TS 的理由。GitHub 上 TypeScript 长期位居最受欢迎语言前几名。
2026-07 的大新闻:TypeScript 7.0 发布,编译器整个用 Go 语言重写(原生编译),构建速度提升约 8~12 倍——微软自家的 VS Code 代码库全量类型检查从 125.7 秒降到 10.6 秒(约 11.9 倍)。本课教材写作时(2023)还没有这件事,这是本节最新的防坑点:老教程里【TS 编译慢】的吐槽已经过时。
三、VBScript:已经退场的兄弟
VBScript(1996):VB 家族的脚本版,当年寄生在 IE 浏览器与 Windows 脚本宿主里。命运已被盖棺:
- 只被 IE 支持——Chrome/Firefox/Edge 从来不认它;IE 于 2022 年正式退役;
- 微软已宣布弃用:Windows 11 的更新计划中 VBScript 按阶段转为【按需启用、最终移除】(2027 年完成);
- 现在还看到
.vbs文件,多半是历史遗留脚本或恶意软件——安全软件对它的告警不是误报。
教材把它与 JS/TS 并列比较是 2023 年的余温;到 2026 年,正确的说法是【VBScript 已进入死亡倒计时】——这是【脚本语言的命运寄生于宿主】的最极端案例:宿主死了,寄生语言跟着走。
四、VBA:退场潮里的幸存者
VBA(Visual Basic for Applications):Office 的自动化脚本(回收 2-5 的【Office 宏】真身)。它活下来靠一个铁打的事实——Excel 是世界上部署量最大的【编程平台】,无数公司的报表、财务模型、数据处理流程长在 VBA 上,替换成本极高。
2026 年的现状:微软主推的继任者是 Office Scripts(TypeScript) 与 Python in Excel(2024 年起逐步推出)——注意这个有趣的闭环:VBA 的继任语言 TS/Python,恰好是本节与上一节的主角。但存量 VBA 的迁移会以十年计,【学 VBA 还值不值】的答案是【工作需要就学,新项目优先 TS/Python】。
五、动手 Demo:浏览器控制台就是零安装的实验室
打开浏览器按 F12 → 切到【控制台(Console)】,逐行输入:
const names = ["小明", "小红", "小刚"];
const scores = [88, 92, 79];
const report = names.map((name, i) => `${name}: ${scores[i]} 分`);
console.log(report);
console.log("最高分:", Math.max(...scores));
看到什么算成功:
['小明: 88 分', '小红: 92 分', '小刚: 79 分']
最高分: 92
读结果:map 的第二个参数 i 拿到了下标(回收 2-4 的高阶函数),模板字符串 ` `` `` 反引号拼出报表,...scores` 把数组展开成参数。这套环境零安装、随开随用——JS 的【宿主就是你的浏览器】。
六、30 秒实验
在刚才的控制台里输入 alert("你好,JavaScript!") 回车——一个弹窗跳出来。这个函数你从未定义过:它是浏览器宿主提供给 JS 的能力(DOM API 家族的一员)。想想 2-5 的结论:脚本语言的能耐,一半来自宿主给它的接口。
七、常见误区
- 【Java 和 JavaScript 是一家的】——错。语言设计上几乎无亲缘(Java 是 Sun 的、类 C 静态类型;JS 是 Netscape 的、原型动态类型);同名纯属 1995 年的营销碰瓷。
- 【TypeScript 运行得比 JavaScript 慢/快】——错。TS 编译后输出的就是普通 JS,运行时性能一模一样;类型检查全部发生在编译期。
- 【VBScript 和 VBA 差不多,都是老 VB】——错。VBScript 寄生于浏览器/Windows 脚本宿主,已随 IE 退场进入移除倒计时;VBA 寄生于 Office,因 Excel 生态仍健在——宿主不同,命运两极。
自测三问(点开对答案)
1. **为什么说 JavaScript 是【被浏览器钦定】的语言?** 答:浏览器原生只执行 ECMAScript(JS),其他语言(TS 等)都要先编译成 JS 才能进浏览器;Web 平台的规模因此把它推成部署量最大的语言。 2. **TypeScript 与 JavaScript 的关系与运行流程?** 答:TS=JS+静态类型;流程是【写 TS → 编译器检查类型并擦除类型输出 JS → 浏览器跑 JS】,运行时性能与 JS 完全相同。 3. **VBScript 与 VBA 的宿主各是什么?命运为何两极?** 答:VBScript 寄生于 IE/Windows 脚本宿主,宿主退役后进入移除倒计时;VBA 寄生于 Office,Excel 生态体量巨大使其长期存活。- ☐ 下一节(2-9)
相关笔记
- 计算机网络 4.2 · HTML —— JS 寄生的那个宿主的另一面
- Java 1.6 · AI编程助手 —— JS/TS 生态里 AI 工具渗透最深的现场
- · 脚本与宏 —— 宿主与寄生关系的概念版
- ⌨️ 编程原理 · 索引 —— 全课路线图