[关闭]
@chris-ren 2016-04-27T07:57:49.000000Z 字数 1787 阅读 1059

ECMAScript介绍

ES6 ECMAScript


ECMAScript是什么?
ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会,英文名称是European Computer Manufacturers Association)通过ECMA-262标准化的脚本程序设计语言。

ECMAScript如何产生?
我们知道JavaScript或者说LiveScript最开始是Netscape搞出来的,后来微软也跟进搞出了Jscript,ScriptEase也有自己的CENvi,这样就有了三个版本的浏览器Script各行其是,大家懂这个混乱的,于是乎标准化的问题被提上议事日程。1997年以JavaScript1.1为蓝本的建议被提交到欧洲计算机制造商协会( E uropean C omputer M anufacturers A ssociation),最后大家载歌载舞搞出了ECMA-262——一种名为ECMAScript的新脚本语言标准。第二年,ISO/IEC(国际标准化组织和国际电工委员会)也采用ECMAScript作为标准,此后天下太平,各大浏览器厂商以ECMAScript作为各自实现JavaScript的基础,当然只是基础,没完全按照来,否则我们也不会有那么多浏览器兼容性问题。

ECMAScript与JavaScript有什么关系?
虽然我们经常拿着两个东西表达相同的含义,但正如刚才提到,JavaScript是各大浏览器厂商基于ECMAScript的实现,也就是说ECMAScript是标准,而JavaScript是真正的语言。JavaScript致力于用户和浏览器交互,所以在ECMAScript基础上拓展了很多内容(比如DOM-文档对象模型和BOM-浏览器对象模型),因此在ECMAScript发布新特性后,各大主流浏览器要实现新特性需要一定的时间。
最新版本JavaScript的官方名称是ECMAScript 2015也称为ES6。
但是,目前,没有一款完全支持ES6的JavaScript代理(无论是浏览器环境还是服务器环境),所以热衷于使用语言最新特性的开发者需要将ES6代码转译为ES5代码(可以通过Babel转换编译器进行转换)。等到主流浏览器完全实现ES6特性大概需要一年左右的时间,若想一睹各代理对于ES6特性的支持情况,推荐大家参考由kangax维护的ECMAScript Compatibility Table。

ECMA规范文档edition 6:
PDF文件:ECMA-262.pdf
Browsable HTML:ECMA-262 edition 6
之前版本的 ECMA 标准请看 这里.

ES6新特性

  1. for-of 循环
  2. 生成器(Generators)
  3. 模板字符串
  4. 不定参数和默认参数
  5. 解构 Destructuring
  6. 箭头函数 Arrow Functions
  7. Symbols
  8. 集合
  9. 代理 Proxies
  10. 类 Class
  11. let和const
  12. 子类 SubClassing
  13. 模块 Modules

======
1. for-of 循环
通过for-of 循环可以遍历数组、集合

for(var value of myArray) {
console.log(value);
}

同样支持Map和Set的遍历,ES6中引入了Map和Set的概念

// 基于单词数组创建一个 set 对象
var uniqueWords = new Set(words);
for (var word of uniqueWords) {
   console.log(word);
}

Map 对象稍有不同:内含的数据由键值对组成,所以你需要使用解构(destructuring)来将键值对拆解为两个独立的变量:

for (var [key, value] of phoneBookMap) {
console.log(key + "'s phone number is: " + value);
}

在此之前我们使用过forEach和forin

myArray.forEach(function (value) {
console.log(value);
});//无法使用break或return
for (var index in myArray) { 
console.log(myArray[index]);
}//index是字符串类型,而且会遍历所有的对象属性

for-in 循环用来遍历对象属性。
for-of 循环用来遍历数据—例如数组中的值、集合中的数据等

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注