1.undefined
/*如果声明一个变量没有赋值的情况下就会输出undefined
null就是空,在内存中不占空间*/
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();