var 有变量提升,全局变量
let 、const 没有变量提升,局部变量
面试题1
```
var a =10
function test(){
// 注释1 var a = undefined
a = 100;
console.log(a); // 100
console.log(this.a) // 10 函数无调用者 this === window
var a = 1; // 会变量提升到 注释1的位置,但let a不行,而且执行到此位置时候,才会给a赋值1
console.log(a); // 1
}
```
面试题2
```
(function (){
var a=b=3; // 拆开为 先执行b=3; var a=b
})()
console.log(b); // 3
console.log(window.b); // 3
console.log(a) // a is not defined
```