ES6知识点
1.变量let
- 新增的用于声明变量的关键字,类似于var
- 用let声明的变量具有块级作用域,var声明的变量不具有块级作用域
例如:在{ }里的let只能在{ }运用,在{ }外边是不可以的
- 不存在变量提升,必须要先声明在使用
- 暂时性死区,var和let声明了同一个变量,在let之前log变量是会出错显示没有定义变量的,let是会和{}里面的进行绑定的
2.常量const
- const是声明常量(内存地址)不能改变的量
- 具有块级作用域
- 声明常量时必须赋值
- 常量赋值之后,值不能修改
3.var、let和const的区别
- var 是函数级作用域,可以变量提升,赋值之后值可以更改
- let是块级作用域,不存在变量提升,值可以更改
- constr也是块级作用域,不存在变量提升,值不可以更改
4.数组解构
- 允许我们按照一一对应的关系从数组中提取值,然后把值给变量,如果不能一一对应上,解构不成功,变量的值为undefined
const[a,b,c]=[1,2,3]
这里面其实就相当于分别给a,b,c赋值为1,2,3,
5.对象解构
- 允许我们使用变量的名字匹配对象的属性值
- 匹配成功将对象属性的值赋值给变量
6.箭头函数()=>{}
- ()里面是放形参的,{}里面是函数体
- 如果形参只有一个,是可以省略()
- 若函数体内只要一句代码,且代码的执行结果就是返回值,{}可以省略
- 箭头函数中的this指向的是函数定义位置的上下文this
7.剩余参数(允许将不定量的值作为一个参数)
//1.普通
function sum(first, ...args) {
console.log(first); //10
console.log(args); //20,30,40
} sum(10, 20, 30, 40);
//2.剩余参数和解构直接使用
let students = ["wangwu", "dvsd", "dfgd"];
let [s1, ...s2] = students;
console.log(s1);
console.log(s2);
8.Array的拓展方法
1.扩展运算符
- 可以将数组或者对象转为用逗号分隔的参数序列
let arr=[1,2,3,4];
console.log(...arr);//1 2 3
- 合并函数
//合并数组
let arr1 = [1, 2, 3, 4];
let arr2 = [7, 8, 9, 10];
// console.log(...arr1, ...arr2)
arr1.push(...arr2);
console.log(arr1);
- 将类数组/可遍历对象转化为真正的数组
var oDivs=document.getElementByTagname("div");
var ary=[...oDivs];
console.log(ary);//会直接把好多个div元素里面的值都放在一个数组里面
2.构造函数方法Array.from()
- 里面的方法还可以接第二个参数,作用类似于数组的map(),用来对每个元素进行处理,将处理后的值放入返回的数组
let array={
"0":"a",
"1","b",
"2":"c",
length:3
};
let ary=Array.from(array);
3.实例方法:find()
- 用来查找第一个符合条件的数组成员,如果没找到就返回undefined
- 查找对象.find((item,index)=>条件);
let ary = [{
id: 1,
name: "张三",
score: 99
},
{
id: 2,
name: "杨晨旗"
}];
let target = ary.find((item, index) => item.score == 99);
console.log(target);
4.实例方法 :findindex()
- 用来查找第一个符合条件的数组成员的位置,没找到就返回-1
let aery = [10, 20, 30];
var x = aery.findIndex(item => {
return item > 15;
});
console.log(x);
5.实例方法:includes()
- 表示某个数组是否包含给定的值,返回的是布尔值
var x2 = ["a", "b", "c"];
console.log(x2.includes("a"));
9.string的扩展方法
1.模板字符串``
特点:
- 可以解析变量${变量}
let uname = `zhangsan`;
console.log(uname);
//特点:(1)可以解析变量
let sayhi = `你好,我的名字是 ${uname}`;
console.log(sayhi);
- 可以换行
let reslut = {
name: "yangchenqi",
score: "99",
sex: "女"
};
let html = `
<div>
<span>${reslut.name}</span>
<span>${reslut.score}</span>
<span>${reslut.sex}</span>
<div>
`;
console.log(html);
- 可以调用函数
const saa = function() {
return `我就是如此的美丽`;
}
let re = `${saa()}猪猪猪`;
console.log(re);
2.实例方法StartsWidth()和endsWidth()
- StartsWidth()表参数字符串是否在原字符的头部,返回布尔值
- endsWidth()表参数字符串是否在原字符的尾部,返回布尔值
let str = "yang chenqi";
var xx = str.startsWith("yang");
var xxx = str.endsWith("zhu");
console.log(xx); //true
console.log(xxx); //false
3.实例方法:repeat()
- 表示原字符串重复n次,返回一个新的字符串
console.log(('x').repeat(5)); //xxxxx
10.Set数据结构
1.基础
- Set本身是一个构造函数,用来生成Set数据结构
const s=new Set();
- Set函数可以接受一个数组作为参数,用来初始化
const s=new Set([1,2,3,4]);
2.实例方法
- add(value):添加某个值,返回Set结构本身
- delete(value):删除某个值,返回一个布尔值,表示删除是否成功
- has(value):返回一个布尔值,表示该值是否为Set的成员
- clear():清楚所有的成员,没有返回值
const x = new Set();
// const x2 = new Set([1, 2, 3]);
//1.add(value)
console.log(x.add(1).add(3));
//2.delete(value),返回true,表删除成功
console.log(x.delete(3));
console.log(x);
//3.has(value)
console.log(x.has(1));
//4.clear()删除所有的成员,没有返回值
console.log(x.clear());
console.log(x);
- 遍历:也拥有forEach()方法,无返回值
const x5 = ["a", "v", "sx", "sa"];
x5.forEach(value => console.log(value));