ES6
大约 2 分钟
ES6
什么是ECMAScript(这里后续都用ES代替)
- 1991年 世界上第一个网页诞生(蒂姆·伯纳斯·李)
- 1995年 Netscape 的 Brandan Eich 创造了JavaScript
- 1996年 将该语言提交给了ECMA(国际标准化组织)想将其标准化
- ECMA发布了ECMA-262标准文件,将该语言称为ECMAScript(原因是JavaScript是被网景公司注册了的)
所以ECMAScript是JavaScript的规格,而JavaScript算是ECMAScript的一种实现(还有JScript,ActionScript);平时两词可互换
如何演变到现在的ES 6 版本
- 1997年: ES 1.0
- 1998年: ES 2.0
- 1999年: ES 3.0 (成功的通行版本,其后的版本完全继承)
- 2000年: ES 4.0 (未通过,太过激进,大部分内容放到了ES6)
- 2007年: 预备发布4.0,依旧分歧太大
- 2008年: 将部分功能改善的一小部分发布为ES 3.1, 会后不久改为ES 5; 激进的部分改为ESHarmony
- 2009年12月: ES5正式发布
- 2011年6月:ES5.1发布,成为国际标准
- 2013年3月:ESHarmony分出来的可行的构想ES6草案冻结
- 2013年12月: ES6发布
- 2015年6月:ES6正式成为国际标准, ES2015
如何查看各浏览器/nodejs对ES6的支持度
- 浏览器
# 阮一峰写的一个工具
npm install -g es-checker
es-checker
- nodejs
# linux
node --v8-options | grep harmony
# windows
node --v8-options | findstr harmony
到目前(2024年)为止,ES6支持度应该还是蛮好的
如何处理ES6的兼容问题(即如何使用Babel转码器)
- .babelrc
- 从Babel 6.0开始不再提供浏览器版本,所以需要构建
- 此外还可利用:在线转换、Traceur转码器
新版本ES7(请跳转ES7)
ES6新特性有哪些
1. let 和 const
{
let a = 1
var b = 2
}
console.log(a) // ReferenceError
console.log(b) // 2
for (let i = 0; i < arr.length; i++) {}
console.log(i) // ReferenceError
/**
* var 声明的变量 全局范围内有效
*/
var a = []
for (var i = 0; i < 10; i++) {
a[i] = function() {
console.log(i)
}
}
a[6]() // 10
/**
* let 声明的变量 块级作用域内有效
*/
var a = []
for (let i = 0; i < 10; i++) {
a[i] = function() {
console.log(i)
}
}
a[6]() // 6
/**
* 不存在变量提升, typeof也不再是一个百分百安全的操作
*/
console.log(foo)
let foo = 2
typeof bar // ReferenceError
let bar = 1
/**
* 暂时性死区
*/