javascript中function的优先级比var高

作者:沙师弟时间:2013-04-27
我们来看一段代码:
var xx = 99;
(function(){
	alert(xx);
	var xx = 100;
})();
你觉得这段代码执行后的结果是什么,99、100?其实都不对,而是 undefined ,那这个是为什么呢?函数外面不是有 var 声明 xx 还给它定义了一个值?其实,在 javascript 中 function 的优先级比 var 高,接下来再看一段:
(function(){
	alert(xx);
	var xx = 99;
	function xx(){
		alert(100);
	}
	alert(xx);
})();
你会不会觉得得出的结果是先打印 undefined 呢?运行一下,原来它将 xx() 整个函数打印出来了,这因为 javascript 将 function 提前解析了。再来看一段更简单的:
var xx;
function xx() {}  
alert( typeof xx );
这样问题就简单明了了,当然,如果你认为,xx被后执行的funcion覆盖了。好,将它们调换下:
function xx() {}
var xx;
alert( typeof xx );