一、let:用于全局变量;
1、let声明的变量不能重复声明;
2、let声明的变量不能变量提升;
3、块状作用域;
4、使用let声明的变量不属于顶层对象;
二、const:用于声明常量
1、声明常量用大写;
2、常量不能修改;
3、块状作用域;
4、使用const声明的常量不属于顶层对象;
三、变量的解构赋值
1、数组的解构赋值
●var [a,b,c] = [1,2,3];
console.log(a,b,c);
●可以给变量添加默认值:a=1;
2、对象的解构赋值
let {bar,foo} = {bar:"lili",foo:100};
console.log(bar,foo);
●完整版本
let {bar:bar,foo:foo} = {bar:"lili",foo:100};
console.log(bar,foo);
●复杂对象
let obj = {
p:["hello",{y:"world"}]
}
//目标获取hello与world
let {p:[x,{y:y}]} = obj;
console.log(x,y);
3、特殊对象的解构赋值
●字符串做数组
let [a,b,c] = "var";
console.log(a,b,c);
●字符串做对象
let {length:len} = "function";
console.log(len);
●Math的应用
let {PI:p} = Math;
console.log(p);
4、实际应用
●交换2个变量的值
let a = 100;
let b = 200;
[a,b] = [b,a];
●提取json中的数据
let jsonData = {
id:1,
status:"okok",
data:[1,2,3,4,5]
}
let {id,status,data} = jsonData;
●用于函数参数默认值
function fn({id,name="张三"}) {
console.log(id,name);
}
fn({id:4})
四、for…of
for (let val of xxx) {
console.log(val)
}
1、用于遍历数组,字符串,元素列表,类数组对象
2、比较
1)for of 纯数组与类数组集合均可遍历;
2)for in 用于数组与对象,获取的是key;
3)forEach 用于纯数组;
五、新增字符串操作
1、模板字符串:就是反引号的用法,定义比较长,复杂的字符串,可以插入变量,可以插入函数;
2、repeat() :console.log("abc".repeat(10));
3、字符串补全长度
let str = "hello";
console.log(str.padStart(10))
console.log(str.padStart(10,"*"))
console.log(str.padStart(10,"abc"))
4、包含某个子字符串
1)indexOf
2)正则
3)str.startsWidth()
4)str.endsWidth()
六、函数新特性
1、函数参数默认值
2、rest参数
1)function fn(...args){}
2)可替代arguments
3)arguments是一个类数组对象,reset是纯数组对象;
3、箭头函数
1)let fn = val => val; 等同于 let fn = function(val) {return val;}
2)实现两个数的和
let sum = (num1,num2) => num1+num2;
console.log(sum(1,5));
3)若要执行多条语句需要加花括号;
4)作用:简化回调函数的写法,箭头函数中的this是函数声明时所在的对象;