如下代码打印
var a = 100;
function a() {
var a = 200;
console.log(a);
}
console.log(a);
a();
在预解析下,函数和变量都会发生提升,且函数提升在变量提升之前,故在全局作用域下,a首先被定义为函数变量,接着又被覆盖为一个数值型,然后再调用函数a,显然会抛出异常(a is not a function),原因是a现在是100。在函数内部,还存在着局部变量a,但它对函数外部的变量不会产生影响。
结果:抛出异常