1
var a;
function a(){}
alert(typeof a)
输出:function
2
function a(){}
var a;
alert(typeof a)
输出:function
3
function a(){}
var a=1;
alert(typeof a)
输出:number
4
var a=1;
function a(){}
alert(typeof a)
输出:number
从1,,2中我们可以看出js引擎是先对var声明的变量进行注册,再对函数类型的变量进行注册。 而3和4是一样的原理,js引擎执行到这段代码时,首先注册var a,但是此时的a的值是undefined,然后注册function a,然后开始执行语句a=1,所以输出的是number。