es6新增特性
es6新增特性
1. let关键字
那么let声明和var声明变量有什么异同呢?
全局作用域下: 两者在全局作用域下作用相似,但是,let声明的变量不会作为全局对象window的属性,而var声明的变量却可以
var numvar = 10;
let numlet = 100;
console.log(window.numvar);//10
console.log(window.numlet);//undefined
块作用域下:let声明的变量只在所处的块级({}之间)有效。
变量提升: let声明的变量不存在变量提升,故必须先声明再使用
变量重名: var允许再同一作用域声明同名的变量,只不过就是会把值覆盖而已;let则不允许在同一作用域声明同名的变量。
暂时性死区: let声明的变量存在暂时性死区
var num = 10;
if(true) {
console.log(num);// 这里程序会把num和块级绑定,认为在打印let声明的num
let num;
}
2. const关键字
const关键字声明变量的特点如下:
- 具有块级作用域
- 声明的同时必须赋值
- 常量赋值后是不能修改的
sum: let, var, const的区别

3. 解构赋值
解构-赋值:按照一定的模式,从数组或者对象中提取值并赋值给另外的变量。
3.1 数组解构
允许按照一一对应的关系从数组中提取值并赋值给变量
如果变量数量 > 数组元素数量,则后面的变量则为undefined
如果变量数量 < 数组元素数量, 则按照数组的前n个分别赋值
3.2 对象解构
方法一: 按照属性名一一对应赋值
let {attr1, attr2} = {
attr1: xxx,
attr2: xxx}
但是这个解构赋值的方法变量名必须和对象里的属性名一致
方法二: 自定义变量名
let {attr1: name1, attr2: name2} = {
attr1: xxx,
attr2: xxx}
冒号前做属性匹配,冒号后才是真正的变量名
4. 箭头函数
通常需要将箭头函数赋值给某个变量,方便调用。
var fn = (arg1, …) => {xxxx}
箭头函数的特点:
- 如果函数体只有一句代码,且代码的执行结果就是返回值,则可以直接省略大括号
- 如果形参只有一个,则可以省略小括号
- 箭头函数不绑定this, 箭头函数中的this是函数定义位置的上下文this
5. 剩余参数...args
剩余参数允许将不定数量的参数表示为一个数组
6. ES6内置对象扩展
6.1 Array扩展方法
扩展运算符…:将数组或者对象拆分成用逗号分隔的参数序列
let arr = [1,2,3]
…arr // 1, 2, 3
应用:拓展运算符可以很好的帮助我们合并数组,将伪数组或者可遍历对象转换成真正的数组
构造函数法Array.from(): 可以将伪数组或者可遍历对象转换成真正的数组
find():用于找出第一个符合条件的数组成员,找不到返回undefined
findIndex(): 找出第一个符合条件的数组成员的位置,找不到返回-1
includes() : 判断数组是否包含给定的值,返回布尔值
6.2 String扩展方法
- 模板字符串``: 和普通的字符串比,可以解析变量,可以换行,可以调用函数!!!!注意解析变量和调用函数需要用 ${}包裹
- str.startsWith(subStr) 和 str.endsWith(subStr) 判断str字符串是否以subStr开头或者结尾,返回true或者false
- str.repeat(): 将字符串重复n次,返回新的字符串
6.3 Set数据结构
扩展运算符…:将数组或者对象拆分成用逗号分隔的参数序列
let arr = [1,2,3]
…arr // 1, 2, 3
应用:拓展运算符可以很好的帮助我们合并数组,将伪数组或者可遍历对象转换成真正的数组
构造函数法Array.from(): 可以将伪数组或者可遍历对象转换成真正的数组
find():用于找出第一个符合条件的数组成员,找不到返回undefined
findIndex(): 找出第一个符合条件的数组成员的位置,找不到返回-1
includes() : 判断数组是否包含给定的值,返回布尔值
- 模板字符串``: 和普通的字符串比,可以解析变量,可以换行,可以调用函数!!!!注意解析变量和调用函数需要用 ${}包裹
- str.startsWith(subStr) 和 str.endsWith(subStr) 判断str字符串是否以subStr开头或者结尾,返回true或者false
- str.repeat(): 将字符串重复n次,返回新的字符串
6.3 Set数据结构
Set数据结构是es6中提出的,类似于数组,但是与数组不同的是,Set中的成员都是唯一的。
const s = new Set([1,2,3,3]); // s = [1,2,3]
应用:
搭配扩展运算符进行数组去重
var arr = [1,3,3,3,3,5]
var set = new Set(arr); //去重
var arrNew = […set]; //用扩展运算符包装成新的数组
set实例的方法
a. add(value): 添加某个值,返回set结构本身
b. delete(value):删除某个值,返回布尔值,表示删除成功与否
c. has(value): 返回布尔值,判断是否有这个成员
d. clear():清除所有成员