上代码:
function fn(e)
{
var a = 100;
function a(){}
console.log(a)
}
fn(10)
// 执行结果为:100
// 根据JS的执行机制,代码会事先进行预解析,预解析包括了变量提升和函数提升(只包括声明式函数),变量提升的优先级是大于函数提升的,所以,由上述代码可得:
function fn(e)
{
var a;
function a(){}
a = 100;
console.log(a)
}
fn(10)
// 现在再看这段代码,就能够一眼看出输入结果了、