【面试题 - 打印结果】var a = 100; function a() { var a = 200; console.log(a); } console.log(a); a();

如下代码打印

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,但它对函数外部的变量不会产生影响。
结果:抛出异常

猜你喜欢

转载自blog.csdn.net/owo_ovo/article/details/135253851