--let
1.不存在变量提升
2.let
不允许在相同作用域中重复声明
3.只要块级作用域内存在let
命令,这个区域就不再受外部影响
--var
1.声明提升 =====>变量的声明分两步,先声明,再赋值,如果只声明,未赋值打印出来是undefined
console.log(num)//undefined
var num =1
2.变量覆盖 =====>声明同一个变量几次,最后打印出来的值是最后一个变量的值
3.没有块级作用域=====>在一个函数作用域里面,定义在函数局部的变量,可以在函数全局使用
--const
1.const声明之后必须赋值,否则就报错
2.定义的值不能修改,否则就报错
3.支持let的其它属性
---ES6中的常见面试题
//运用ES6方式改变a,b的值
let a=1
let b=2
[a,b]=[b,a]
console.log(a,b)//a=2,b=1
运用ES6的方式去重
let arr=[1,3,4,2,1,4,5,456,3]
let arr1=[...new Set(arr)]//set去重, ... 展开运算符
console.log(arr1)//[1,2,3,4,5,456]
ES6中的promise
// 这里的promise是构造函数,执行顺序为同步执行
const promise=new Promise((resolve,reject)=>{
console.log(1)
resolve()
console.log(2)
})
//.then()方法为异步执行方法
promise.then(()=>{
console.log(3)
})
console.log(4)
//打印出来的顺序为 1,2,4,3