今天去面试有一个题目答错了

var getName = function() {
    alert(1);
};
function getName() {
    alert(2);
}
getName();

我答alert(1)——是不可能滴,我答错了回答alert(2), 我以为相当于重复定义一个函数,第二个覆盖第一个,结果大错特错。
我回来实验,alert(1)。我想应该是变量提升(hosting)吧,实际执行顺序应该是

function getName() {
  alert(2);
}
var getName;

getName = function() {
    alert(1);
}
getName();

函数先提升,变量再提升


VonWeb
21 声望3 粉丝