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—没有变量提升
<script> /*在es6中没有声明提前,在es5里面有*/ console.log(a); let a=10; //报错 </script>
5.function是优先于var声明的(如果同时存在的话)
//var和undefined都会提前声明的,而且function是优先于var声明的,如果同时存在的话//会将function声明的函数放在作用域的顶部console.log(a);var a=20;function a(){ console.log(a);}a();
//1.function和var声明的变量 2.调用的函数 3.赋值var a=function(){ console.log(a);}var a;console.log(a);a=20;a();