先使用变量后定义变量(实际开发中要先定义并初始化变量,再使用变量)
console.log(a) //undefined 所有变量定义会提升到,当前作用域所有语句之前,var a 提升,
var a = 12;//变量声明提升只提升定义,不提升值
console.log(this)//作用域是window
//例题,答案undefined,undefined
console.log(y)
var x,y=2;
console.log(x);
x=3;
函数声明提升
和变量声明提升一样,函数声明也可以被提升
fun();//输出函数被执行
function fun (){
alert('函数被执行')
}//此函数在预解析阶段会被提升
函数表达式不能提升(如果函数是用函数表达式的写法定义的,则没有提升特性)
fun();//发生错误
var fun=function (){
alert('函数被执行')
}//var fun会被提升,(匿名函数)
函数优先提升
fun();//弹出B
var fun=function (){
alert('A')
};//var fun提升,变量声明提升,无法覆盖提升的函数
function fun(){
alert('B')
};//函数优先提升
fun();弹出A