ES6基础
一、let ,const(const:常量,不能重新赋值)
var:
1、可以重复声明
2、作用域:全局作用域 和 函数作用域
3、会进行预解析
console.log(a) //undefined
var a=1;
let:
1、同一作用域下不能重复声明
2、作用域:全局作用域 和 块级作用域 {}
3、不进行预解析
console.log(a) //Uncaught ReferenceError: Cannot access 'a' before initialization
let a=1;
二、解构赋值
let obj = {
a:1,
b:2
}
let a = obj.a;
let b = obj.b;
等价于 let {a,b} = obj;
对象解构赋值名称需一一对应
let arr = ['a','b','c'];
let [e,f] = arr;
数组解构赋值顺序需对应
let a = 0;
let b = 1;
快速交换a,b的值: [a,b]=[b,a]
三、展开运算符
let arr = ['a','b','c'];
let arr2 = [1,2,...arr,3,4]
console.log(arr2); //[1, 2, "a", "b", "c", 3, 4]
四、set
let arr = [1,2,5,6,4,6,1,2,1,2]
let s = new Set(arr);
console.log(s) //Set(5) {1, 2, 5, 6, 4} 去重功能
s.size :个数,==》length
s.clear() 清空所有值
s.delete(具体需要删除的内容)
s.add(具体需要加入的值)
s.has(是否包含某个值)
五、Map
let arr = [
['a',1],
['b',2],
['c',3],
]
let m = new Map(arr);
m.get('a'); //获取值:1
m.set('d',4); //设置值

六、箭头函数
let fn = (...agr)=>{
console.log(agr); //所有参数 [1,2,3]
/*
1、没有 arguments
2、this指向:箭头函数本身没有this,指向其作用域所在this
3、参数默认值: let fn = (a=10,b=20)=>{}
*/
}
fn(1,2,3);
形参=>返回值 //单个参数可以不加() 单语句可以不加{}
(形参,形参)=>{执行语句} //多个参数需要加()
()=>{执行语句} //没有参数也需要加()
七、数组新增方法
Array.from(类数组) 把一个类数组转换成真正的数组
类数组:有下标,有length,
Array.of(1,2,3,4) 把参数转数组
Array.isArray() 检测是否是一个数组
arr.find(callback) 查找数组中满足条件的第一个元素的值
let arr = [1,2,3,4];
let val = arr.find(item=>item>3);
console.log(val) //4
arr.findIndex(callback) 查找数组中满足条件的第一个元素的索引
let arr = [1,2,3,4];
let val = arr.findIndex(item=>item>3);
console.log(val) //3
arr.flat([depth]) 多维数组扁平化,提取成一维数组
arr.flatMap(callback) 数组扁平化,只能处理一层
arr.fill(填充值,从第几位开始填充,截止到第几位) 填充
arr.includes(value,从第几位开始检索) 是否包含某个值,返回值:true/false
八、字符串方法
str.startsWith(value,从第几位开始查找) 是否是以某个字符串开始的
str.endsWith(value) 是否是以某个字符串结束的
str.repeat(重复多少次)
模板字符串:
${} 插值表达式
let name = 'tyl';
let a = `hello <strong>${name}</strong>`; 可换行
九、对象新增方法
let a=0;
let b=1;
let name = 'tyl';
let obj = {
a,
b,
c(){函数体},
[name]:123
}

Object.assign(目标对象,obj,obj,...); 将后面的obj合并到目标对象
Object.is(value1,value2) 比较两个值是否相等
Object.is(NaN,NaN) //true

浙公网安备 33010602011771号