情况1:使用var关键字定义的变量优先被声明
console.log(a); // undefined
var a = 20;
/*
var a =20;
(1)声明变量a -- 优先被执行,此刻的值是undefined
(2)给变量a赋值,等赋值语句执行,进行赋值,此刻的值是20
*/
情况2:使用fucntion关键字定义的函数,优先被执行
var test = 20;
function test(){
console.log("I can fly");
}
test(); // test is not a fucntion
/*
执行过程:(1)var优先声明,声明变量test,此刻test的值为undefined
(2)function优先定义,此刻test变为一个函数
(3)程序顺序执行,test = 20,执行赋值操作,test变量由函数变成了数值类型
*/