1.undefined
/*如果声明一个变量没有赋值的情况下就会输出undefinednull就是空,在内存中不占空间*/var a;console.log(a); //undefined
2.声明提前
/*声明提前,变量提升javascript在执行代码的时候会将所有使用var声明的变量,放在作用域的顶部集中创建,赋值留在原地*/<script>console.log(a);var a=20;function go(){console.log("hello world")}var b="good"</script>
3.声明提前的执行代码
<script>var a,b;console.log(a); //undefined 因为a没有赋值a=10;b="good"</script>
4.let—没有变量提升
let const 是块级作用域。
<script>/*在es6中没有声明提前,在es5里面有*/console.log(a);let a=10; //报错</script>
5.function是优先于var声明的(如果重名同时存在,会将其覆盖)
//var和undefined都会提前声明的,而且function是优先于var声明的,如果同时存在的话//会将function声明的函数放在作用域的顶部console.log(a); //ƒ a() { console.log(a); }var a=20;function a(){console.log(a);}a(); // Uncaught TypeError: a is not a function
//1.function和var声明的变量 2.调用的函数 3.赋值var a=function(){console.log(a);}var a;console.log(a);a=20;a();
