ECMAScript包含哪些内涵?
JavaScript编程语言是由ECMA(一个类似W3C的标准组织)在ECMAScript下进行标准化的。在其他方面,ECMAScript定义:
- 语言语法(Language syntax)——解析规则(parsing rules)、关键字(keywords)、语句(statements)、声明(declarations)、操作符(operators)等。
- 类型——布尔型、数字型、字符串型、对象型等等。
- 原型和继承
- 内置对象和函数的标准库——JSON、Math、Array、对象内置方法等。
它没有定义与HTML或CSS或Web APIs(如DOM(文档对象模型))有关的任何东西。这些定义在单独的标准中。ECMAScript涵盖了JS的各个方面,这些方面不仅存在于浏览器中,也存在于非浏览器环境中,如node.js。
新标准
ES6是对该语言的一次重大升级。与此同时,你的JS代码将继续工作。ES6是为最大限度地兼容现有代码而设计的。事实上,许多浏览器已经支持各种ES6特性,实现工作正在进行中。这意味着你所有的JS代码已经在实现了一些ES6特性的浏览器中运行了!如果到目前为止您还没有看到任何兼容性问题,那么您可能永远也不会看到。
ES的第六个版本
ECMAScript标准之前的版本分别为1、2、3和5。第四版怎么了?ECMAScript 4版曾被计划过——事实上已经做了大量的工作——但最终因为过于雄心勃勃而被废弃了。(例如,它有一个复杂的带有泛型和类型推断的可选择加入静态类型系统)。ES4是有争议的。当标准委员会最终停止对它的工作时,委员会成员同意发布一个相对温和的ES5,然后继续研究更多实质性的新特性。这个明确的、经过协商的协议被称为“和谐”,这就是为什么ES5规范包含了以下两句话:
ECMAScript是一种充满活力的语言,而且语言的发展还不完整。该规范的未来版本将继续进行重大的技术改进。
这句话可以看作是一种承诺。
兑现承诺
ES5是该语言的2009年更新版本,它引入了object. create()、object. defineproperty()、getter和setter、strict模式以及JSON对象。我已经使用了所有这些特性,我喜欢ES5为这门语言所做的一切。但要说这些特性对我编写JS代码的方式产生了巨大影响,那就太过分了。对我来说,最重要的创新可能是新的Array方法:.map()、.filter()等等。
ES6是不同的。这是多年和谐工作的产物。它是新语言和库特性的宝库,是迄今为止对JS最实质性的升级。新功能范围从受欢迎的便利,如箭头函数和简单的字符串插值,到让你大脑融化的新概念,如代理Proxies和生成器Generators。
ES6将改变你编写JS代码的方式。