ES6(一)简介
本文最后更新于:8 个月前
ES6指什么?它与ES2015是什么关系?ES6有哪些新特性?ES6的兼容性如何?
ES6(一)简介
一、ES6是什么
不管是面试,还是学习过程中,我们都经常听见一个名词——ES6。那么ES6究竟是什么?
「ES6」 泛指 「ES5.1」之后的 ECMAScript版本,也可以称为“JavaScript语言的下一代版本”。
我们常把 5.1 之前的 ECMAScript 版本统称做 「ES5」,将 6 版本之后的版本统称做 「ES6」(因为从 2015 年起,ECMAScript 终于步入正轨,每年发布一次版本,到了 2021 年,已经发布了 6 个版本了,实在太多,所以用变革了 JavaScript 时代的 ES6 作为后续版本的代称)。所以「ES6」代表的不仅仅是「ES2015」,而是指「ES2015」及其之后的所有ECMAScript版本
二、ES6 的新内容
下面对「ES6」的新内容做一个罗列
- 基本变量
- 变量声明:let 和 const
- 变量的解构赋值
- 字符串的扩展,如:模板字符串
- 字符串新增方法,如:includes()、startsWith()
- 数值的扩展,如新增BigInt类型
- 基本引用类型
- RegExp 的扩展,如:对RegExpd构造函数进行了完善
- Math 的扩展,增加了与数学相关的方法
- 集合引用类型
- 数组的扩展,如:扩展运算符,新增Array.from()
- 新增 Set 和 Map
- 对象
- 对象属性的简写表示法,即直接在对象大括号里写入变量或函数
- 属性名表达式
- 扩展运算符和解构赋值
- 类,ES6引入了类
- Module模块化
- Promise,ES6原生提供了Promise对象,用于异步编程,替代传统的回调函数+事件
- Generator函数,ES6提供的异步编程解决方案
- async函数,Generator的语法糖
- 新增Proxy对象拦截器
- Reflect对象,为了操作对象提供的新API
对于上述内容,有一些只需做简单的了解,因为实际使用的场景较少,可以在需要用到时候再深入探究,如Reflect、Generator、以及众多的不常用的新特性。
有一些需要做深入的探究,因为需要频繁在开发中用到,如let和const的使用,Set和Map,数组的扩展,解构赋值、扩展运算符等等。深入掌握这些知识,能够明显提高开发效率和质量。
其中有一些内容,我已经在JavaScript基础、JavaScript进阶板块中探究过了,所以在ES6这个板块中就不再重复。
三、ES6兼容性
ES6的兼容性问题来源于:浏览器版本的发布时间早于ES6的定稿和发布。
ECMAScript 2015 (ES6) | Can I use… Support tables for HTML5, CSS3, etc 该网站可以查询浏览器对ES6的支持程度。
可以看到(如果我没看错的话),我的浏览器(Edge111)对ES6新特性的支持程度为97.68%,也即是说,即使最新版本的浏览器也未必支持ES6的所有新特性。
为了兼容更多的浏览器版本,有一些工具可以将ES6语法转换成ES5语法,如:Babel转码器。