变量声明提前
****使用var声明的变量会在所有的代码执行之前被声明,但赋值不会提前
console.log("a = "+ a);
var a=123;
返回的是a=undifined 这两行代码相当于
var a;
console.log("a="+a);
a=123;
而如果代码是
console.log("a="+a);
a=123;
则会报错
****如果声明变量时没有使用var,则不会提前声明
函数声明提前
使用函数声明形式创建的函数function 函数名(){} 代码在执行前它就会被创建,所以可以在函数声明前调用这样声明的函数
var fun2 = function(){} 使用函数表达式创建的函数不能在声明前调用
比如
fun2();
var fun2 = function(){};
会报错
而
fun2;
var fun2 = function(){};
则得到的是undifined 因为fun2用var 声明了,所以会被提前声明,不报错,但它的赋值确实在后面下进行的
第一种情况是它根本不知道fun2是函数,只知道fun2是被声明但未被赋值的变量,你去调用一个undefined肯定会报错