浏览器不支持(未启用)JavaScript,本页面的某些功能无法正常使用

第一课:JavaScript发家史——一个“临时工”如何逆袭成宇宙级顶流?

大家好,欢迎来到《JavaScript基础课》!今天咱们不急着敲代码,先穿越回上个世纪,看看JavaScript这位“语言圈顶流”的逆袭人生。

你可能会想:学编程还要听故事?是的!因为JavaScript的诞生史,比电视剧还精彩——有职场宫斗、有浏览器大战、有十年冷板凳,最后竟然逆袭成全栈之王。听完这节课,你不仅能跟朋友吹牛,还能明白为什么JavaScript这么“奇葩”又这么强大。


1. 序幕:1995年,互联网的“石器时代”

想象一下1995年的互联网:打开网页,全是黑白文字,点个链接要等30秒加载,想玩个游戏?不存在的。当时最火的浏览器是网景Navigator,市场占有率90%以上(比现在的Chrome还霸道)。

网景的工程师们觉得,静态网页太无聊了,得加点动态效果——比如鼠标划过按钮时变个色,或者提交表单前先检查一下有没有填错。但这些功能当时都得发回服务器处理,一来一回黄花菜都凉了。于是老板拍板:咱们得在浏览器里内置一种脚本语言,让网页自己能动起来!


2. 主角登场:Brendan Eich的“十天极限编程”

网景找来了一位大神:Brendan Eich(布兰登·艾克)。这哥们是函数式编程的粉丝,本来想把Scheme(一种Lisp方言)塞进浏览器。但当时Sun公司的Java如日中天,网景正跟Sun合作,要在浏览器里支持Java小程序。Sun放话:“你们的脚本语言,语法得长得像Java,这样程序员才愿意用!”

Brendan内心:??? Scheme和Java完全是两个物种啊!但老板催得紧,Sun又是金主,他只能硬着头皮上。结果,这位天才程序员只用了10 天就搞定了语言原型!1995年5月,第一版诞生,最初叫Mocha(摩卡,网景内部代号),后来改叫LiveScript,最后在12月正式定名JavaScript——就是为了蹭Java的热度。

所以,JavaScript和Java的关系,就像“老婆”和“老婆饼”——除了名字,半毛钱关系没有。JavaScript借了Java的C风格语法壳子,但内核是Scheme的函数式+Self的原型链,活脱脱一个“缝合怪”。可正是这种混血基因,让它后来能适应各种场景。

小知识: Brendan后来回忆说,如果当时时间再多一点,他可能会把语言设计得更严谨,但正因为仓促上马,才有了JavaScript灵活、宽容的特性——比如弱类型、自动类型转换,这些既是槽点也是优点。


3. 第一次浏览器大战:微软搅局,江湖大乱

网景的JavaScript火了,微软坐不住了。1996年,微软在IE 3.0里推出了自己的实现,取名JScript,目的是避开Sun的商标。为了对抗网景,微软还搞了个“反编译”行动,逆向工程了JavaScript引擎,所以 JScript 和JavaScript大体相似,但细节上故意不兼容。

于是,开发者们噩梦开始了:写网页时,必须先检测用户用的是啥浏览器,然后写两套代码:

if (navigator.appName == "Netscape") {
    // 执行网景版代码
} else {
    // 执行 IE 版代码
}

当时流行的段子是:最好的浏览器是?IE!因为你可以用它下载网景。(手动狗头)

这场浏览器大战打到1997年,网景眼看要输,决定把JavaScript提交给国际标准化组织ECMA,希望制定统一标准。1997年6月,ECMAScript第一版发布——注意这个名字,它是JavaScript的“标准规范”,而JavaScript是它的一个实现(就像菜谱和实际做的菜)。

此后,ECMAScript陆续更新:1998年第二版(小修小补),1999年第三版(引入正则表达式、异常处理、do-while循环),奠定了JavaScript此后十多年的基础。但紧接着,ECMAScript 4计划大跃进,要加类型、类、模块等高级特性,结果各大厂商吵得不可开交,项目流产。这一拖,就是十年。


4. 黑暗时代:被当成“玩具”的那些年

2000年代初,IE 凭借Windows捆绑销售,把网景按在地上摩擦(网景后来被AOL收购,最终解散)。微软觉得大局已定,停止了对IE的重大更新。JavaScript呢?成了网页上给按钮加点悬停效果、弹个广告窗的“玩具语言”,被正经程序员鄙视:“这玩意儿能写大型应用?笑死。”

很多开发者甚至故意禁用JavaScript,因为当时它常被用来弹烦人的广告。JavaScript就这样在角落里默默蹲了五六年,直到一个叫Ajax的家伙出现。


5. 复兴之火:Ajax点燃第二春

2005年,一个叫Jesse James Garrett的哥们写了一篇文章,提出了Ajax(Asynchronous JavaScript and XML)概念——说白了,就是用JavaScript里的XMLHttpRequest偷偷和服务器通信,然后只更新页面的局部,而不刷新整个页面。

Google第一时间用上了这招:Gmail和Google Maps上线,用户惊呆——邮件客户端居然可以在网页里直接拖拽,地图居然可以无缝缩放!大家这才发现,JavaScript居然这么强大!从此,Ajax成了标配,“Web 2.0”时代开启。

库和框架开始井喷:Prototype、Dojo、MooTools,以及后来一统江湖的jQuery。jQuery的口号是 “Write Less, Do More”,它把复杂的DOM操作和浏览器兼容性封装成简单的$()函数,让开发者只需写一行$('div').hide()就能隐藏所有 div。直到今天,jQuery仍在很多老项目中运行着,堪称“活化石”。


6. 双星闪耀:ES5与Node.js

2009年是JavaScript历史上里程碑式的一年,发生了两件大事。

事件一:ECMAScript 5(ES5)发布。这是ES4难产后的务实更新,加了严格模式("use strict"),原生支持 JSON,还有forEachmapfilter等数组方法,让JavaScript更像“现代语言”。虽然变化不算翻天覆地,但为后面的爆发铺好了路。

事件二:Node.js诞生。一个叫Ryan Dahl的程序员,受够了Apache服务器“来一个请求开一个线程”的笨重模式。他灵机一动:如果把Chrome的V8引擎抽出来,用JavaScript写服务器,配合事件驱动、非阻塞 I/O,岂不是又轻又快?于是Node.js横空出世。

这一下,JavaScript不仅能写前端,还能写后端、写命令行工具、写桌面应用!前端开发者喜极而泣:“终于能一套语言通吃前后端了!” npm包管理器也随着Node.js一起发布,从此全球程序员开始疯狂造轮子——如今npm上已有超过200万个包,程序员“偷懒”的力量果然无穷。


7. 惊天变革:ES6,JavaScript的成年礼

2015年,距离ES5发布已经过去6年。这期间,社区涌现了CoffeeScript、TypeScript等“改良版JavaScript,原生JavaScript再不进化就要被抛弃了。

TC39委员会(负责制定ECMAScript标准的组织)痛定思痛,决定改变策略:不再憋一个大版本,而是每年发布一个新版本,小步快跑。于是ECMAScript 2015(即 ES6)震撼登场。

ES6带来的更新堪称“海啸”:letconst块级作用域、箭头函数、类、模板字符串、解构赋值、模块化、Promise、迭代器……几乎所有现代语言的特性都被塞了进来。JavaScript从“长得像Java的脚本语言”彻底变成了“一门能构建大型应用的成熟语言”。程序员们高呼:“我们终于有类了!(虽然只是语法糖)”

从此,JavaScript开启了年度更新模式:ES2016加个includes,ES2017加个async/await,ES2018加个异步迭代……每年都有新玩具,开发者永远学不完(笑)。


8. 群雄逐鹿:框架大战与TypeScript崛起

ES6之后,前端框架进入三国时代:Angular、React、Vue三足鼎立。它们让开发者用组件化的方式构建UI,彻底改变了前端开发模式。如今,React和Vue的社区生态异常繁荣,Angular则在大型企业应用中占有一席之地。

与此同时,随着应用规模越来越大,JavaScript动态类型的“自由”也成了痛点——你永远不知道一个变量到底是字符串还是数组,经常半夜被undefined is not a function的报错惊醒。

2012年,微软发布了TypeScript,给JavaScript加上类型系统,还有接口、泛型等硬核特性。TypeScript迅速俘获了大型项目的芳心,连Vue 3的源码都用TypeScript重写。如今,TypeScript几乎成了企业级项目的标配——既能享受JavaScript的灵活,又能获得静态类型的保护,堪称“鱼与熊掌兼得”。


9. 未来已来:WebAssembly与JavaScript的“共生”

2017 年,另一个大杀器WebAssembly(Wasm) 降临浏览器。它能让 C/C++、Rust等语言编译成二进制代码在浏览器里以接近原生速度运行。于是有人问:JavaScript会被取代吗?

答案是:不会。Wasm擅长的是计算密集型任务(如游戏、图像处理、3D 渲染),而JavaScript依然扮演着“胶水语言”的角色,负责与用户交互、调用Wasm模块、操作DOM。两者是合作而非竞争关系。

未来,JavaScript将继续在Web平台占据核心地位,同时也会随着新的API和硬件发展不断进化。它已经从当年那个“临时工”,变成了无处不在的“宇宙级语言”——从浏览器到服务器,从桌面到手机,甚至太空飞船(NASA用JavaScript做宇航员界面)都有它的身影。


总结与思考

回顾JavaScript的30年:

  • 诞生:10天仓促上线,只为蹭Java热度。
  • 波折:浏览器大战,标准分裂,蹲了十年冷板凳。
  • 复兴:Ajax点燃Web 2.0,jQuery一统江湖。
  • 飞跃:Node.js让JS跑出浏览器,ES6彻底成熟。
  • 未来:TypeScript加持,Wasm协作,生态持续繁荣。

JavaScript的发展史告诉我们:哪怕开局再烂,只要不断迭代、跟上时代,也能逆袭成顶流。这不正像我们学编程的过程吗?别怕自己基础差,学就完了!


课后小思考

  1. 如果你生活在1995年,面对“10天设计一门语言”的任务,你会怎么设计?(欢迎脑洞)
  2. 为什么说JavaScript和Java的关系像“老婆和老婆饼”?你能想到其他类似的“蹭热度”例子吗?
  3. 你用过哪些“老古董”技术(比如jQuery、IE兼容代码)?欢迎在评论区分享你的“踩坑”经历。

下课预告:第二课,咱们要真刀真枪写代码了——教你搭环境、敲出第一行console.log('Hello World'),并见识一下它的亲戚们(alert、document.write)。准备好迎接你的第一个程序了吗?

(第一课完)

标签: JavaScript
作者: 野码指月
日期:2026年03月10日

评论