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

When declaring two functions with the same name in a global scope, the second one gets executed

function getResult(){
return 1;
}

alert(getResult()); //alerts 2

function getResult(){
return 2;
}

could anyone explain, how does this happen?

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

提升简而言之:

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

在所有变量可用的阶段,最新的将覆盖最旧的。这就是调用第二个函数的原因。第一个直接被覆盖了

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

声明的函数和变量