函数内部声明变量声明提到顶部

var name = "Kevin";
function callName()
{
    alert(name);
   var name = "marry";
}
callName(); // undefined


Javascript在进入一个函数域时,先扫描声明,注意,仅仅是声明,并没有执行赋值,每个变量的初始值都是undefined

 所以上式也可以相当于下面这种写法

var name = "Kevin";
function callName()
{
   var name;
    alert(name);
   name= "marry";
}
callName(); // undefined
原文地址:https://www.cnblogs.com/pigtail/p/2442498.html