ECMAScript 与 JavaScript
JavaScript 与 ECMAScript 是什么样的关系?
JavaScript
是一种专为与网页交互而设计的脚本语言。
ECMAScript
与 Web 浏览器没有依赖关系,浏览器只是它可能的 宿主环境之一。其他宿主环境包括 Node(一种服务端 JavaScript 平台)和 Adobe Flash。
javascript 是为网页表单而开发的,但随后的发展,可能它被另外抽象为 “一种语言”,而这 “一种语言” 的基础就
ECMAScript
,在此基础之上可以构建更完善的脚本语言。
而JavaScript
就是 “更完善的脚本语言” 之一了。另外还有nodejs
,它使用的是类似JavaScript
的结构语法编程,指的就是ECMAScript
为基础构建的另一个 “更完善的脚本语言”。
为了更好的说明,附javascript
和nodejs
的区别:
- JavaScript 组成:ECMAScript (定义这门语言的基础,比如语法、数据类型、结构以及一些内置对象等)、DOM(基于 ECMAScript,扩展出来的用于操作页面元素的方法)、BOM(基于ECMASCRIPT,扩展出来的用于操作浏览器的一些方法)。
- NodeJS 是以 ECMAScript 为基础,然后在这个基础上扩展出来的一些操作其他东西(即操作非浏览器)的一些方法,比如操作OS操作系统、file文件系统、net网络、database数据库等。
- 也就是说 nodejs 和 JavaScript 在底层都是一样的,都是 ECMAScript,但是扩展出来的功能却是不一样的。一个是偏向于前端浏览器,一个是偏向于后端。
ECMAScript 都规定了些什么内容?
大致来说,它规定了这门语言的下列组成部分:
- 语法
- 类型
- 语句
- 关键字
- 保留字
- 操作符
- 对象
完整的 JavaScript
既然 ECMAScript
是不依赖于宿主环境的,那么宿主环境必然要提供一些扩展,以便实现针对环境的操作。
在浏览器中,包括两个方面的操作。
- 用于操作页面元素的方法
- 用于操作浏览器的一些方法
比如要获得 id="app"
的文档元素,浏览器提供了扩展 DOM
,你可以利用 document.getElementById()
获得文档元素。
比如要跳转一个地址,浏览器提供了扩展 BOM
,你可以利用 window.location.href=""
跳转到新的地址。
因此一个完整的 JavaScript
实现包括 ECMAScript
核心外,还有具体的功能。
- ECMAScript 核心
- 文档对象模型 DOM(Document Object Model)
- 浏览器对象模型 BOM (Browser Object Model)
推荐文章: