-
新增的声明关键字
- let,const,class,import,export
- let
- 不允许变量名重复
- 全局变量不属于window
- 块级作用域:花括号就是作用域
- 不存在提升
- 暂时性死区
- const
- 拥有let所有特点
- 常量,声明之后地址不允许被修改,值可以修改
- 使用建议: const > let > var
-
新增的箭头函数:非正常函数,不能直接使用,只能作为值使用
- 语法,极简:
()=>{}
- 当有且只有一个参数时,可以省略小括号
- 当有且直接设置了返回值时,可以省略花括号和return
- 注意:花括号和return必须同时省略
- 直接返回对象时,如果需要省略return,需要将对象再套一层小括号
- 箭头函数内部没有this,使用上一层的this
- 使用场景
- 作为赋值式创建函数的值
- 作为参数使用(回调函数)
- 作为返回值使用(闭包函数)
- 作为匿名函数的函数体
- 作为事件处理函数,不建议
- 语法,极简:
-
新增的运算符 - 展开运算符
- 用来操作复杂数据(打包之后的数据),数组和对象
- 展开之后,数据一定要放在合适的位置
- 数组:只能在能接收多个数据的位置展开
- 对象:只能在能接收键值对的位置展开
- 语法:
...数据
- 应用:
- 深拷贝
- 合并
- 快速传参
- …等等等
-
新增的解构赋值
- 解构:解开复杂数据的结构进行赋值,数组和对象和字符
- 数组:从左向右依次解构,超出数据长度,解构出undefined
let [a, c, b] = [3, 4, 5];
- 对象:按照键(key)一一对应,不存在的key为undefined
let {age,name} = {name:"admin",age:18};
- 字符:类似于数组
let [a,s,d,f] = "hello";
- 应用:
- 快速传参
- 交换变量的值
- …等等等
-
字符串的新增
- 对Unicode编码中无法被一个四位的十六进制表示的字符提供的支持
- 如:𠮹,需要被两个四位的十六进制表示
- 将字符转成Unicode编码:“𠮹”.codePointAt()
- 将Unicode编码转成字符:String.fromCodePoint(134073)
- Unicode编码在浏览器中新的表示方式
- “\u{20bb9}”
- 字符的方法
- 是否包含指定:str.includes(子串)
- 是否以指定开头:str.startsWith(子串)
- 是否以指定结尾:str.endsWith(子串)
- 重复字符串:str.repeat(n)
- 字符串模板
- 要求使用反引号包裹字符串:`
- 在反引号包裹的字符串中,使用
${}
标记变量 - 支持在代码中直接换行表示
- 对Unicode编码中无法被一个四位的十六进制表示的字符提供的支持
-
新的数据类型:Symbol
- Symbol
类字符的数据类型,突出了字符的标记功能,Symbol类型主要用来做标记数据使用。自身的值,并不是那么重要,主要是自身所表示的标记 - 创建Symbol
- let s1 = Symbol();
- 任何两个Symbol都不相等
- Symbol使标记的定义和使用,容错率更高,语义化更好
- Symbol
-
ES6新增 - 数据集合
- 数据的新的集合形式,不是新的数据类型,之前的数据集合形式:数组,对象
- ES6新增了:set集合和map集合
- set集合:对应数组,但不允许数据重复
- 创建:new Set(数组)
- map集合:对象对象,但不存在键值对,本质为值值对
- 创建:new Map()
- 方法或属性
- 数据的个数:s|m.size
- 数据中值对应的名字集合:s|m.keys()
- 数据中值的集合:s|m.values()
- 数据中数据的集合:s|m.entries()
- 给set添加数据:s.add(值)
- 给map添加数据:m.set(名, 值)
- 读取map的数据:m.get(名)
- 新的遍历方式:for-of
- for-in遍历的是索引或key
- 无法遍历set和map
- for-of遍历的是值
- 无法遍历对象