1、var,let和const
es6是一种规范,js来实现
var 和let的区别
1、不存在变量提升
var存在变量提升
console.log( c )
var c='c'
js会进行预解析,浏览器执行顺序如下
var c;
console.log( c ) //undefined
var c='c'
let不存在变量提升
console.log( c ) //报错误信息
let c='c'
2、同一个作用域下不能重复定义同一个名称
var a=1
var a =99
console.log( a ) //99
let a=1
let a =99
console.log( a ) //error
let a=1
a =100
console.log( a ) //100 重新赋值
3、有着严格的作用域
var 是函数作用域在function内都可以获取到值,
function fun() {
var n =10
if (true) {
var n=100
}
console.log(n) //100
}
let是块级作用域,每个大括号是一个作用域
function fun() {
var let =10
if (true) {
let n=100
}
console.log(n) //10
}
const
声明一个只读的常量,一旦声明,常量的值不能改变(字符串,数字,布尔,null,undefined)
const b=99
b=100
console.log(b) //error
const d //error,const必须进行初始化
引用类型:数组和对象可以进行修改
const obj={ }
obj.name='baby'
console.log(obj) // {name:'baby'}
2、箭头函数(简化函数的定义)
变量名=形参=>返回值
let f = v => v;
等于如下
var f =function ( v) {
return v
}
let f =()=>123 //没有形参,返回值固定
let f =function (){
return 123
}
3、 set 和map
set :类似于数组,成员是唯一的
map:类似于对象
const s =new Set( )
s.add( 1 ).add(2).add(3).add(2) 链式写法 //{1,2,3}
var arr1=[1,2,3,4,5,1,22,3,4]
var arr2=new Set(arr1)
console.log( arr1 )//{1,2,3,4,5,22}
var arr3=[...new Set(arr1)]//使用扩展运算符
console.log( arr3)//[1,2,3,4,5,22]
const m = new Map()
map以键值对的形式添加数据
m.set(“name”,“amy”).set(“age”,18)
for of
for ( let [key,value] of m ){
}