什么是JavaScript
# JavaScript
实现
完整的 JavaScript
实现由以下三个部分组成:
- 核心(ECMAScript)
- 文档对象模型(DOM)
- 浏览器对象模型(BOM)
ECMA-262 定义的语言包含以下部分
- 语法
- 类型
- 语句
- 关键字
- 保留字
- 操作符
- 全局对象
# ECMAScript
# ES6 更新
ECMA-262 第6 版,俗称ES6、ES2015 或ES Harmony(和谐版),于2015 年6 月发布。这一版包含了大概这个规范有史以来最重要的一批增强特性。ES6 正式支持了类、模块、迭代器、生成器、箭头函数、期约、反射、代理和众多新的数据类型。
# ES8 更新
ECMA-262 第8 版,也称为ES8、ES2017,完成于2017 年6 月。这一版主要增加了异步函数(async/ await)、SharedArrayBuffer 及Atomics API,以及Object.values()/Object.entries()/Object. getOwnPropertyDescriptors()和字符串填充方法,另外明确支持对象字面量最后的逗号。
# ES 符合性与 TypeScript
ECMAScript
是 JavaScript
的标准,而 TypeScript
是 JavaScript
的超集,它为 JavaScript
添加了可选的静态类型和基于类的面向对象编程。
支持ECMA-262 中描述的所有“类型、值、对象、属性、函数,以及程序语法与语义”;
支持Unicode 字符标准。
此外,符合性实现还可以满足下列要求。
增加ECMA-262 中未提及的“额外的类型、值、对象、属性和函数”。ECMA-262 所说的这些额外内容主要指规范中未给出的新对象或对象的新属性。 支持ECMA-262 中没有定义的“程序和正则表达式语法”(意思是允许修改和扩展内置的正则表达式特性)。
# DOM
文档对象模型(DOM,Document Object Model)是一个应用编程接口(API),用于在HTML 中使用扩展的XML。
# BOM
IE3 和Netscape Navigator 3 提供了浏览器对象模型(BOM) API,用于支持访问和操作浏览器的窗口。使用BOM,开发者可以操控浏览器显示页面之外的部分。而BOM 真正独一无二的地方,当然也是问题最多的地方,就是它是唯一一个没有相关标准的JavaScript 实现。HTML5 改变了这个局面,这个版本的 HTML 以正式规范的形式涵盖了尽可能多的 BOM 特性。由于 HTML5 的出现,之前很多与 BOM有关的问题都迎刃而解了。 总体来说,BOM 主要针对浏览器窗口和子窗口(frame),不过人们通常会把任何特定于浏览器的扩展都归在BOM 的范畴内。