预解析: JavaScript代码在浏览器中执行之前会进行预解析也就是先进行一个代码解释,在进行预解析的时候 会先把 var 变量名 以及 定义的函数提前(这就是为啥申明式函数可以先调用的原因),so 如果你在定义一个变量并赋值之前就打印它的话,那么肯定是 执行这句 var 变量名; 也就是说打印的结果就是undefined ; 如果有多个函数是一样的函数名 那就调用最后一个 因为后面的会覆盖前面的
console.log(a); // undefined
var a = 2;
// 分析 执行之前预解析 把var a;提前,
var = a;
console.log(a); // undefined
a = 2;
对于函数
func(); // 2
function func(){
console.log(1);
}
function func(){
console.log(2);
}