//1
var a;
console.log(a); //1
function b(){
console.log(a); //undefined
var a = 2;
}
b();
//2
var v = "hello";
if(true){
console.log(v); //代码块是没有作用域的,只有function里才有作用域
var v = "world";
}
<ol>
<li>
变量提升的意思是声明变量会被提前执行,所以在console.log的时候,a已经被声明,但是并未赋值,赋值语句没有被提升,还在console的后面,所以此时是undefined;还有一个知识点,一切变量在未赋值之前都是undifined!!!!不是null不是空值!!!</li>
<li>代码块是没有作用域的,只有function里才有作用域</li>
</ol>