let 的特征(区别于var)
1、不存在变量申明提升
function fun(){
console.log(b);
let b= 200; //不会提前申明
}
fun(); //报错
2、同一作用域下不能重复申明
let b = 100;
let b = 200;
console.log(b); //报错
3、let属于块级作用域,var属于函数作用域
先看看var
// var a在同一个函数作用域内
function fun(){
var a = 100;
if(true){
var a = 200; //修改的是同一个a
}
console.log(a); //200
}
fun();
再看看let
function fun(){
let a = 100; //if外面的块的a
if(true){
let a = 200; //单独if块内部的a,与前面的a不一样
}
console.log(a); //100
}
fun();
const
一经定义就必须赋值,若为常量不可再改变。
引用类型的地址是不变,是可以改变内容的
新增的数据结构
map键值
const map = new Map([['name','Herry'],['age',12]]);
//has判断是否有此键值,true/false
console.log(map.has('name'));
//取出键值
console.log(map.get('name'));
//删除键值
console.log(map.delete('name'));
//得到键值
console.log(map.get('name'));
//赋键值
map.set("name","Tom");
console.log(map.get('name'));
map.delete('age');
console.log(map.get('age'));
map.forEach((value,key,map) => {
console.log(value); //值
console.log(key); //键
// console.log(map);
});
set确保元素的唯一性,可以用来去重数组
let newArr2 = [...( new Set(arr2))];
console.log(newArr2);
处理异步的方法
回调函数
promise
异步改为同步