在全局范围内声明两个具有相同名称的函数时,第二个函数将被执行

时间:2019-11-20 16:05:21

标签: javascript hoisting

function getResult(){
return 1;
}

alert(getResult()); //alerts 2

function getResult(){
return 2;
}
  

谁能解释,这是怎么发生的?

1 个答案:

答案 0 :(得分:0)

您最后声明的函数被视为最新函数。最新的总是先执行。您可以在声明之前调用它的原因是因为提升。

简而言之:

在执行函数之前,所有变量和函数均已注册并可用,因此可以在声明它们之前从中调用它们。

在使所有变量都可用的阶段,最新的将覆盖最早的变量。这就是为什么调用第二个函数的原因。第一个完全被覆盖。

请注意,这不适用于const和let。仅使用functionvar

声明的函数和变量