声明变量var跟let有什么区别?

  1. 不存在变量提升
console.log(c);
var c = '111';

这边var存在预解析,变量提升,执行方式其实如下

var c;
console.log(c); //所以很显然这边打印出来的值是undefined
c = '111';
  1. 同一个作用域下不能重复定义同一个名称
  2. 有着严格的作用域
function fun(){
let n = 10;
if(true){
let n = 100;
}
console.log(n); // n=10 //这边的n不会报错,因为let是块级作用域啦
}
fun();

 const 声明一个只读的常量,一旦声明,常量的值就不能改变。一定必须要初始化,不能只声明不赋值

箭头函数:简化了函数的定义

let f = v => v;    // 变量名 = 参数 => 返回值(函数体)

等同于

var f = function(v){
return v;
}

数据结构 

set 类似于数组,成员是唯一的
const s = new Set(); // 实例化
s.add(1).add(2).add(3); //支持链式写法
//面试常见问题 去重
var arr2 = [1,2,3,4,5,4,1,1,4,5,2,4,2,3];
var arr3 = [...new Set(arr2)]; 扩展运算符 先序列化处理,然后再转换成数组





map 类似于对象,键值对方式,但是键可以是任何类型

const m = new Map();
m.set('name','huanhuan').set('age','18');//支持链式写法