es6新特性
一。let
1.不会发生变量提升
2.同一作用域下不能重复定义同一个名称
3.有着严格的作用域
var属于函数作用域
let块级作用域
console.log(a); // 输出undefined
console.log(b); // 报错ReferenceError
var a = 2;
let b = 2;
//a用var声明,发生了变量提升,开始运行脚本时,a已经存在,没有值
b用let声明,没有发生变量提升,开始运行脚本时,b不存在,没有值
var n=1
var n=100
console.log(n)//100
let n=1
let n=100
console.log(n)//Error
let n=1
n=100
console.log(n)//100
function fun(){
let n=10;
if(true){
let n=100;
};
console.log(n)
};
fun()//10
二。const
1.声明一个只读的常量,一旦声明,不可以改
2.一定要初始化,不能只声明不赋值
三.箭头函数 简化了函数的定义
let f = v =>v; //变量名 = 参数 =>返回值(函数体)
let f2=()=>123
let f3=(n1,n2)=>n1+n2;
四.数据结构 set map
set 类似于数组 成员是唯一的
map 类似于对象
const s=new Set()
s.add(1).add(2).add(3).add(2)//Set(3) {1, 2, 3}
var arr2=[7,8,9,4,5,6,1,2,5,6,8,3]
const arr3=new Set(arr2)//Set(9) {7, 8, 9, 4, 5, …}
const arr4=[...new Set(arr2)]//(9) [7, 8, 9, 4, 5, 6, 1, 2, 3]
...扩展运算符
const m=new Map();
m.set("key","value").set("age","18")//Map(2) {"key" => "value", "age" => "18"}
for(let[key,value] of m){console.log(key,value)}