原文来自阮一峰的博客
ECMAScript 和 JavaScript 的关系
ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了。它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。
ECMAScript 和 JavaScript 到底是什么关系?
要讲清楚这个问题,需要回顾历史:
- 1996 年 11 月,JavaScript 的创造者 Netscape 公司,决定将 JavaScript 提交给标准化组织 ECMA,希望这种语言能够成为国际标准
- 1997 年,ECMA 发布 262 号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言称为 ECMAScript,这个版本就是 1.0 版
该标准从一开始就是针对 JavaScript 语言制定的,但是之所以不叫 JavaScript,有两个原因。一是商标,Java 是 Sun 公司的商标,二是想体现这门语言的制定者是 ECMA。
总结,ECMAScript 是规格,JavaScript 是 ECMAScript 的一种实现(另外的 ECMAScript 方言还有 JScript 和 ActionScript),日常场合,这两个词是可以互换的。
JavaScript 导论
JavaScript 是一种嵌入式(embedded)语言。它本身提供的核心语法不算很多,只能用来做一些数学和逻辑运算。JavaScript 本身不提供任何与 I/O(输入/输出)相关的 API,都要靠宿主环境(host)提供,所以 JavaScript 只合适嵌入更大型的应用程序环境,去调用宿主环境提供的底层 API。
目前,已经嵌入 JavaScript 的宿主环境有多种,最常见的环境就是浏览器,另外还有服务器环境,也就是 Node 项目。
从语法角度看,JavaScript 语言是一种「对象模型」语言。各种宿主环境通过这个模型,描述自己的功能和操作接口,从而通过 JavaScript 控制这些功能。但是,JavaScript 并不是纯粹的「面向对象语言」,还支持其他编程范式(比如函数式编程)。
JavaScript 的核心语法部分相当精简,只包括两个部分:
- 基本的语法构造(比如操作符、控制结构、语句)
- 标准库(一系列具有各种功能的对象比如 Array、Date、Math 等)
除此之外,各种宿主环境提供额外的 API(即只能在该环境使用的接口),以便 JavaScript 调用。
以浏览器为例,它提供的额外 API 可以分成三大类:
- 浏览器控制类:操作浏览器
- DOM 类:操作网页的各种元素
- Web 类:实现互联网的各种功能
如果宿主环境是服务器,则会提供各种操作系统的 API,比如文件操作 API、网络通信 API等等。这些都可以在 Node 环境中找到。
广泛的使用领域
近年来,JavaScript 的使用范围,慢慢超越了浏览器,正在向通用的系统语言发展。
- 浏览器的平台化
- Node
- 数据库操作
- 移动平台开发
- 内嵌脚本语言
- 跨平台的桌面应用程序