【Node&Vue】什么是ECMAScript?

116 阅读2分钟

前言

本篇文章主要从 ECMAScript 引入,讲一讲啥是 ECMAScript。

也会附带讲到 V8、JS、Node.js 与 ECMAScript 的关系。【这一块内容其实也很重要】

看完之后相信你可以用自己的话说出

啥是 ECMAScript

并且也会对V8、JS、Node.js 与 ECMAScript 的关系有一个比较清楚的认识

注:结尾会有对标题的回答

正文

一、什么是 ECMAScript?—— 初印象

  1. 【!!重要!!】它是一种规范。JS 是其中一个比较出名的实现。

    就第一点最重要,后面的可看可不看

  2. ECMAScript 的全称是 “European Computer Manufacturers Association Script”,中文意为“欧洲计算机制造商协会脚本”。

二、ECMAScript 与 Node.js 的关系

  1. ECMAScript 是语言规范用来规定 JS 要怎么写才是正确的。
  2. Node.js 是 JS 的运行环境,JS 程序员用 ECMAScript 所规定的语法写代码,Node.js 中的 V8 负责解析和执行这些 JS 代码
  3. 【关系】当 ECMAScript 规定了新标准,Node.js 会及时跟进。用聊天的方式解释下吧:
【ECMAScript】:我宣布个事,我加了个A特性!嘿嘿。
【V8】:我知道了,我会去实现的。
过了一段时间V8实现好了,发了个新版本。说:我实现好了bro
【Node.js】:好的,我把我底层的 V8 也更新了,下个版本就跟进!这样JS程序员写的关于A特性相关的JS代码在Node.js就不会有问题了!就符合ECMAScript的规范了✌️

三、【补充】:Node.js 与 V8 的关系简述如下

  1. Node.js 底层使用 V8 来解析和运行 JavaScript。任何 JS 代码在 Node.js 中的执行最终都由 V8 处理。

  2. V8 是一个愣头青,只解析执行 JS 代码,其他的比如操作文件之类的通通不管 —— Node.js 的原生模块弥补了这一块内容

  3. Node.js 知名度最高的事件循环(Event Loop) 和非阻塞 I/O 模型和 V8 没啥关系,【上面也说了 V8 这个愣头青专门解析和执行 JS 代码】而是 Node.js 自己整合的 libuv 库实现的。

  4. 各个 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 要怎么写才是正确的。

相关链接