声明提前
1.变量声明提前
变量的声明提前
-使用var关键字声明的变量,会在所有的代码执行之前被声明(但是不会赋值)﹐
但是如果声明变量时不适用var关键字,则变量不会被声明提前
//变量声明提前
console.log("a = "+a);
var a = 123; //-->a = undefined没报错
//相当于
var a;
console.log("a = "+a);
a = 123;
//在代码执行前就会检查,定义(只是定义但没有赋值)
2.函数声明提前–(估计你也理解了java python中为什么函数可以在创建前调用----->优先级高)
函数的声明提前
-使用函数声明形式创建的函数function函数(){}
它会在所有的代码执行之前就被创建
fun(); //-->我是函数1
fun2(); //-->UncaughtTypeError: fun2 is not a function
//fun2();虽说变量声明提前,但是变量声明了,var fun2; 他还没有被函数赋值,所以会报错
function fun(){
console.log("我是函数1");
}
var fun2 = function(){
console.log("我是函数2");
};
//就相当于
var fun2;
fun2();
fun2 = function(){
console.log("我是函数2");
};
//-->知道为什么报错了吧