T1 ES6的简介
1. es6全称叫做 ECMAScript, es5的升级版
2. let用法
let只有在声明代码块中有效,不能重复赋值,不存在变量的提升(先赋值再使用)
3. const 是一个只读变量,声明初始化以后无法改变
(ES6 明确规定,代码块内如果存在 let 或者 const,代码块会对这些命令声明的变量从块的开始就形成一个封闭作用域)
数组的解构
1. 数组的变量赋值与变量的格式需要一一对应
2. 数组中变量进行省略,逗号是不能省略的
3. ...变量名 -------剩余运算符(获取后面所有值)
4. 默认值:当有匹配的值赋值时,显示这个值,如果匹配的值是undefined,显示默认值
对象模型的解构:
let { baz:foo } --------baz是模型的名称, foo是变量
let{P:[x,{y}]} --------P可以理解为类的名称,赋值的时候需要按照字段的顺序赋值
Symbol 是一个数据类型,表示独一无二的值,场景用在定义对象的唯一属性名,相同参数的Symbol()返回的值是不相等的
Symbol.for(key) -----首先全局搜索被登记的Symbol中是否有该key,如果有就返回Symbol的值,没有就新建这个名称Symbol
Symbol.keyFor() ---- 返回一个已登记的Symbol类型值的key,检测该key是否被登记过
Map对象:
Maps和Objects的区别:
1. object的键只能是字符串或者Symbols, map的键可以是任意值
2. Map中键值是有序的,object中的键不是
3.Map的键值对个数可以从size属性获取,而object的键值对个数只能手动计算
4. object都有自己的原型,键名可能和自己的对象设置的键冲突
Map中的键可以是任意值,当key为字符串或者NaN,那么可以通过key的名称和值 来获取value中的值, key为对象或者函数的时候,通过key的值是无法获取value中的值
Map的遍历: 1. for....of的方式遍历 ----- for(var [key,value] of map){}
遍历keys集合 和 values集合
2. foreach的方式遍历 ----- map.foreach(function(value,key){});
3. Map可以跟二维数组Array进行相互转换
new Map(array) -------构造函数可以直接把二维数组转换为map集合
Array.from(map) ------from方法转换为二维数组
4. Map的克隆, 构造函数创建的实例是一个新对象,和原来的不全等
5. Map的合并,后面集合如果含有前面集合中的key, 后面集合会覆盖前面集合中的value值
Set对象: 存储的值总是唯一的,进行值的恒等判断 几个特殊的(+0和-0,undefiend,NaN只存在一个)
Set可以与Array进行转换,Set主要用去对Array进行去重
函数:function
基本用法: function fn(参数){}
默认值的用法:1. 参数不赋值或者赋值 undefiend ,参数才会获取默认值
2. 默认值必须先赋值才能作为默认值
不定参数 : ...变量名
箭头函数: 1. 箭头函数是函数一种省略写法 a=> a
2. 当函数体中不只一行代码时,不能省略{}
3. 当返回值是对象的时候,必须加上()
4 .当函数体中没有this对象,调用的是window对象
this在箭头函数中的用法:箭头函数中的this,调用的是定义函数的对象,不是使用函数的对象
迭代器:迭代器是遍历数据结构中的指针,带有2个参数 value 和 done , value存储值,done存储指针状态是否结束
for...of的用法: 遍历数据结构有: Array, String ,Map, Set 等
字符串的扩展:
includes() -----------返回布尔值,是否包含子字符串
startsWith() -----------返回布尔值,子字符串是否在原字符串的头部
endsWith() ------------返回布尔值,子字符串是否在原字符串的尾部
repeat() ------------重复字符串,参数向下取整, 不能为负数(0到-1)
padStart(长度,字符) -----------原字符串前面自动补全
padEnd(长度,字符) ---------原字符串后面自动补全
模板字符串: 用反引号来表示, 里面加入变量或表达式
标签模板:是一个函数的调用,调用的是模板字符串 例如: alert`hello,world`