1、var声明就有变量提升能力,let更适合局部。使用let声明,形成封闭作用域,let声明之前使用区域形成临时死区。
var可以声明两个同名变量,后取前,let不能声明两个同名变量。
2、const声明,与let基本一样,声明后必须立即赋值。
3、全局作用域:直接使用的全局变量如name,其实是window的内置属性。var设置的全局变量,等于window的内置属性。
4、块级作用域:在块级作用域生命的函数,外部也可以访问。加入let后则不能访问。
5、数组的解构
数组解构赋值:2种写法: (1)、分行解构 :let info=["小明",100,"男"];let [name,age,gender]=info; console.log(name);console.log(age);console.log(gender)
(2)、单行解构 let [name,age,gender] = ["小明",100,"男"];必须一一完美匹配才能正确。没有变量的时候可以用逗号做占位符不去赋值。
后面的值不需要变量,可以:let [name,...other] = ["小明",100,"男"];
6、对象的解构:(1)定义一个对象字面量,然后解构赋值。
let obj = {
name:“Mr.Lee”,
age:100,
};
let{name,age}=obj;
不想用变量名进行解构,可以加键值对。
let obj = { name:“Mr.Lee”, age:100};
let {name:myName,age:myAge,gender=“男”} = obj;
console.log(myName)
(2) 在对象字面量里,还嵌套了对象,解构时也用同样的方法解开即可。
单行解构: let {name,age} = {name:"Mr.Lee",age:100};
7、其他常用的解构:
如果想让普通变量的值进行交换,不必第三个变量的参与;
let key = 1, value = “Mr.Lee"; //交换 [key,value]= [value,key];
函数返回值解构:
function fn(){
return ["Mr.Lee",100,”男“];
}
let [name, age ,gender]=fn();
console.log(name);
let [x,y,z] = "ABC"; console.log(y);
8、函数的参数
function fn(name,
age:number=100,
arr:*[]=[],
obj:()={},
callback=function(){}){
}
fn();
函数的默认值也可以是另一个函数的返回值。
9、箭头函数 箭头扩展和尾调用(递归函数)
字符串的扩展改进:
${name} 变量 今年${age}岁。 正则
数组的扩展改进(...)将数组转换为逗号隔开的数值 ...[10,20]
array.from()方法,将类似数组的对象和遍历转化为真正的数组。
let obj = {
0:“name”,
1:“age”
2:“gender”
length:3
}
array.from(obj)
find()和findIndex()方法,用于查找数组中第一个匹配的值
let items=[10,20,30,40,50]; console.log(items.find(value=>value>19));会返回20.
let items=[10,20,30,40,50]; console.log(items.findIndex(value=>value>19));会返回1.
ES6提供的fill()方法,可以填充重写数组中的元素值;
let items=[1,2,3,4,5];
items.fill("a")
console.log(items) //["a","a","a","a","a"]
items.fill("a",2,3) //[1,2,"a",4,5]
对象的简写改进
对象的新增方法:
symbol类型: let s = Symbol();console.log(s)
Set数据集合 16、ES6之前只有数组一种数据结构,而现在提供了Set和Map两种集合。Set集合是一种无重复元素的列表,使用new Set()方法创建Set集合;
let set = new Set();set.add(1),set.add(2)或者let set = new Set([1,2,3]) set.has(2)//true
删除操作:set.delete(2)
想将Set集合转换为数组的方法:
let arr = [...set];
我们可以使用for或者forEach来遍历Set集合:
let set = new Set([1,2,3,4,5,6])
for (let i of set){
console.log(i);
}
或者 set.forEach(function(key,value,set){})
17、Map数据集合:以键值对存储
map.set("name","Mr.Lee"); map.set("age",100);
迭代器和生成器: