JavaScript 的变量提升
考虑如下输出结果:
例1:
b=2; var b; console.log(b);
例2:
console.log(c); var c=2;
由于变量声明会被提升,赋值操作或其他运行逻辑留在原处;
例1等同于:var b; b=2;console.log(b);//输出2
例2等同于:var c;console.log(c); c=2; //输出undefined
例3:
fun1(); function fun1(){ console.log("ok"); };
例4:
fun2(); var fun2=function(){ console.log("ok"); };
由于函数声明会被提升,函数表达式却不会;
例3正常执行输出 ok;
例4 fun2被提升,但并没有赋值,fun2() 对undefined值进行函数调用导致TypeError异常。