变量提升:
在js预编译阶段,函数和变量的声明会被提前检索编译,打乱了编写时的声明顺序。
函数字面量表达式不会被提升 var a = function(){};
ex:
console.log(a)
var a = 2;//undefined
console.log(a)//报错
分为两步进行:1.var a(变量提升) 2.a = 2
在es6中
let存在于块级作用域中,相同区域内不允许声明相同的变量名,外部区域无法访问
const:一旦声明变量赋值就不可改变,只声明不赋值会报错,可修改const声明对象类型,不能重复声明