当在全局作用域中声明两个具有相同名称的函数时,将执行第二个函数


function getResult(){
return 1;
}
alert(getResult()); //alerts 2
function getResult(){
return 2;
}

有人能解释一下,这是怎么发生的吗?

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

简而言之:

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

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

请注意,这不适用于const和let。仅使用functionvar声明的函数和变量

最新更新