前言
本篇文章主要从 ECMAScript 引入,讲一讲啥是 ECMAScript。
也会附带讲到 V8、JS、Node.js 与 ECMAScript 的关系。【这一块内容其实也很重要】
看完之后相信你可以用自己的话说出
啥是 ECMAScript。
并且也会对V8、JS、Node.js 与 ECMAScript 的关系有一个比较清楚的认识
注:结尾会有对标题的回答
正文
一、什么是 ECMAScript?------ 初印象
- 【!!重要!!】它是一种规范 。JS 是其中一个比较出名的实现。 就第一点最重要,后面的可看可不看
- ECMAScript 的全称是 "European Computer Manufacturers Association Script",中文意为"欧洲计算机制造商协会脚本"。
二、ECMAScript 与 Node.js 的关系
- ECMAScript 是语言规范用来规定 JS 要怎么写才是正确的。
- Node.js 是 JS 的运行环境,JS 程序员用 ECMAScript 所规定的语法写代码,Node.js 中的 V8 负责解析和执行这些 JS 代码
三、【补充】:Node.js 与 V8 的关系简述如下
-
Node.js 底层使用 V8 来解析和运行 JavaScript。任何 JS 代码在 Node.js 中的执行最终都由 V8 处理。
-
V8 是一个愣头青,只解析执行 JS 代码,其他的比如操作文件之类的通通不管 ------ Node.js 的原生模块弥补了这一块内容
-
Node.js 知名度最高的事件循环(Event Loop) 和非阻塞 I/O 模型和 V8 没啥关系,【上面也说了 V8 这个愣头青专门解析和执行 JS 代码】而是 Node.js 自己整合的 libuv 库实现的。
-
各个 Node.js 版本一般有其对应的 V8 版本。这个应该比较好理解。因为首先 ECMAScript 在不断发展,假设今天 ECMAScript 新增了 A 特性,那么 V8 就会去新增 A 特性的兼容,而 Node.js 底层通过 V8 去解析、执行 JS 代码,如果 Node.js 不去实时更新对应的 V8 版本,那就跟不上 ECMAScript 那边定义的新特性了。其实 Node.js 官网也给出承诺了,原文的部分内容如下:
Node.js is built against modern versions of V8. By keeping up-to-date with the latest releases of this engine, we ensure new features from the JavaScript ECMA-262 specification are brought to Node.js developers in a timely manner, as well as continued performance and stability improvements.
总结
最后回归一下主题!
【问】什么是 ECMAScript?
【直接秒杀版-答】
ECMAScript 是一种语言规范,规定了 JS 要怎么写才是正确的。