云霞资讯网

学 JavaScript 前,这 4 个词你必须懂:JS、ES、DOM、BOM

大家好,我是 31 岁的小米,一个每天都被技术“精神按摩”的程序员。你要问我为什么?大概是因为,每次接触技术,我都能像



大家好,我是 31 岁的小米,一个每天都被技术“精神按摩”的程序员。你要问我为什么?大概是因为,每次接触技术,我都能像拆开盲盒一样,发现里面的惊喜和坑点并存,让我每天都能深刻感受到:生活不易,但写代码真香。

今天,我想跟你讲一个关于 JavaScript 的故事。不,是“一次前端世界奇妙旅行”的故事。

我第一次遇见 JavaScript,是在一个深夜的 debug 现场

事情发生在很久很久以前,那晚我独自加班,办公室只剩下我和空调的嗡嗡声。我盯着一个“不听话的按钮”发呆——明明点得很用力,它就是不响应。那一刻我怀疑人生:

是按钮坏了吗?

是页面卡了吗?

还是…我电脑被隔壁部门的同事下了诅咒?

就在我开始胡思乱想时,一个前端大佬悠悠走来,喝着奶茶,用一种“凡尔赛般轻柔”的语气说:

“加个 JavaScript 就好了。”

JavaScript。就这三个字,像一个新的世界入口,把我从黑暗 debug 的深渊里,拽向了一条奇怪但迷人的道路。

于是我开始查资料、翻教程、疯狂敲 demo,然后我惊讶地发现:

原来网页里的互动、动画、数据更新、各种动来动去的小玩意儿,都是 JavaScript 在背后操控!

那天之后,我对 JavaScript 的感觉,就像乘上了小火车,突然闯进了一个色彩绚丽的技术乐园。

JavaScript 到底是什么?一个前端世界最活泼的灵魂角色

如果你问我 JavaScript 是什么,我会这样形容:

它是网页世界的小精灵,负责让整个页面动起来。

没有它,网页就是一张静态海报;

有了它,你能点按钮、展开菜单、输入表单、看到动态效果、听到交互声音……

JavaScript 的出现,让网页从“纸片人”变成了“会走路的 NPC”。它是一门运行在浏览器里的脚本语言,它能做的事情包括但不限于:

监听用户事件,例如点击、滑动、输入;

修改网页内容和样式;

实现网页交互效果;

与服务器通信(例如 AJAX、fetch);

实现动画、渲染 UI、处理数据;

打造整个应用(例如 Vue、React 都是 JavaScript 的孩子)。

你甚至可以用 JavaScript 写后端(Node.js)、写桌面程序(Electron)、写小程序、写游戏、写脚本工具……

就像一个万能胶,哪儿都能粘一口。所以,我脑海中常常出现这样一个场景:

HTML 是网页的骨骼CSS 是网页的衣服和妆容JavaScript 则是网页的灵魂、情绪、性格和行动力

它们组成了现代 Web 的“三件套”,缺一不可。

ECMAScript:JavaScript 背后那套“法律与宪章”

我曾经特别困惑:为什么教程里不断提到 ECMAScript?难道 JavaScript 还有亲兄弟?

后来我才明白,ECMAScript 不是语言,是标准。就像 JavaScript 的“宪法”。JavaScript 只是 ECMAScript 的一种实现。你可以把 ECMAScript 理解为“规则”,而 JavaScript 是“规则的执行者”。

举个生活中的例子:

ECMAScript 是法律

JavaScript 是按照法律执业的律师

你这个前端开发者,是一名在各种 bug 中挣扎的普通老百姓

每一版 ECMAScript 都会更新一些 JavaScript 新能力,比如:

ES5(历史经典版)

ES6(又叫 ES2015,改变 JavaScript 命运的一代)

ES7、ES8、ES9……每一年都更新

比如你现在经常看到的:

let、const

箭头函数

Promise

async/await

class

解构赋值、展开运算符

模块化 import/export

这些全都是 ECMAScript 标准里定义出来的。所以,如果把 JavaScript 比成一个不断升级的战士,那 ECMAScript 就是给它不断颁布新技能、新武器的新版本规则书。

每年都会变强一点

每年都会变帅一点

每年都会变复杂一点(对,我们开发者都懂这种痛苦)

DOM:JavaScript 与网页之间的“秘密通道”

当我第一次理解 DOM 的时候,我感觉像我终于学会了偷看网页的“内部构造图”。

DOM,全称 Document Object Model。听起来很严肃,但其实它的作用很简单:

它把网页的结构(HTML)变成一棵“可以用 JavaScript 操作的树”。

你点一下一个按钮,JavaScript 想知道哪个按钮被点了,这时候 DOM 就会出来说:

“我来,我来!这个按钮就是我家第 3 层第 2 个儿子,我帮你找到。”

DOM 就像一个中间人,让 JavaScript 可以做到:

修改文本内容(innerText)

修改样式(style)

增加节点(appendChild)

删除节点(remove)

监听事件(addEventListener)

简单来说:

DOM 就是网页世界的“骨肉通道”,让 JavaScript 能改写页面、操纵页面、重绘页面。

如果没有 DOM,JavaScript 就像有魔法却施展不出来的巫师。它能念咒语,但不能动人参果。

BOM:浏览器世界的“大总管”

如果说 DOM 是“管网页内容的管家”,那 BOM(Browser Object Model)就是“整个浏览器的总管”。

BOM 让你用 JavaScript 控制浏览器外的元素,比如:

浏览器窗口(window)

地址栏(location)

历史记录(history)

本地存储(localStorage、sessionStorage)

navigator(浏览器信息)

我第一次知道 window.alert() 是 BOM 的时候,惊讶地以为:

“原来我能操控的不止是页面,还有整个浏览器!!”

BOM 就像浏览器的遥控器,让 JavaScript 具备更强大的“系统级能力”。比如:

导航跳转?location.href = ‘…’

前进后退?history.back()

存点用户数据?localStorage.setItem()

你甚至能检测浏览器类型、屏幕信息、网络状态!

某种意义上,DOM 让 JavaScript 能操控页面;BOM 让 JavaScript 能操控浏览器;这两者加起来,JavaScript 就成了“网页世界的全能王者”。

JavaScript 在今天,是一种跨宇宙的存在

当我告诉很多刚入行的朋友:

“JavaScript 不只是写网页的语言,你甚至能用它写服务器、桌面应用、游戏。”

他们的表情就像第一次吃到麻辣火锅一样复杂:

“真的假的?这居然也能用 JS 写?!”

我很理解这种震惊,因为 JavaScript 的发展太快、太强了。

Node.js 让 JavaScript 跑进后端;

Electron 让 JavaScript 写桌面应用;

React Native 让 JavaScript 写手机 App;

小程序更是把 JavaScript 推到了更多领域。

所以我经常说:

学 JavaScript,不是在学一门语言,而是在解锁整个科技世界的门。

它就像一个万能钥匙,你能用它打开各种不同的技术房间,它永远不会过时,永远会进化,永远能让你感受到技术的魅力。

总结:为什么我愿意一遍又一遍分享 JavaScript?

因为我走过的每一步困惑、迷茫、卡壳、兴奋,都真实发生过;

因为在学习前端的路上,我曾被一个又一个概念搞得怀疑人生;

也因为我知道,只要你理解了 JavaScript、ECMAScript、DOM、BOM,你就真正入门了前端世界。

而这四样东西,就像你第一次进入一个全新宇宙时的“基础法则”。掌握它们,你就能:

看懂网页的运作逻辑

写出会动的页面

构建自己的应用

拥抱一个超级巨大、超级热闹的技术生态

最重要的是:

你会发现,JavaScript 真的是一个有灵魂、有温度、有趣得不像话的语言。

END

我们下期再见~