- var:变量提升,定义的变量都会被提升到该作用域的最顶部,变量也可以在声明之前使用
  
- let:块级作用域,不能重复定义
- const:块级作用域,不能重复定义,定义常量不能被修改;虽然const变量不能修改指针,但是可以修改值,比如我们定义一个对象,我们就可以修改对象里的属性值,但是不可以重写整个对象。
const person = {
    name: "蛙人",
    age: 23
}
person.age = 18 // 没问题
person = {} // 报错 不能修改对象指针
具体例子分析:
 1)例子1
 变量a挂载到Window上了:
Window上无变量a
 
 2)例子2
 ∵ 先执行同步代码i++,再执行异步代码
 a.
 

 b.
 
 



















