9月25日

问题:

以下代码会输出什么:
function fn(a){              
   console.log(a);              
   var a = 2;              
   function a(){}              
   console.log(a);
}
fn(1);

答案:f a() { } 2
解析:我们知道预解析阶段,变量声明和函数声明会提前,且变量名和函数名同名时,函数优先级高于变量,会覆盖变量,因此第一个输出的是f a(){ },继续执行,会执行a=2,再输出的时候就会输出2,不理解的同学百度一下变量提升和函数提升

猜你喜欢

转载自blog.csdn.net/weixin_44180173/article/details/108805895