函数申明中,个别类型变量跟函数重名状况
var fn = 1;function fn() { return 1;}console.log(fn); // 显示的是fn的值1
function fn() { return 1;}var fn = 1;console.log(fn); // 显示的是fn的值1,跟定义程序无关
var fn;function fn() { return 1;}console.log(fn); // 显示的是fn函数
函数表达式中,个别类型变量跟函数重名状况
var fn;var fn = function() { return 1;}console.log(fn); // 显示的是fn函数
var fn = 2;var fn = function() { return 1;}console.log(fn); // 显示的是fn函数
var fn = function() { return 1;}var fn = 2;console.log(fn); // 显示的是fn的值
var fn = function() { return 1;}var fn;console.log(fn); // 显示的是fn函数
论断:
- 如果变量申明给与赋值,变量优先于函数申明晋升
- 如果变量申明未赋值,函数申明优先于变量晋升
- 如果变量申明给与赋值,变量依照先后顺序失效,前面笼罩后面
- 如果变量申明未赋值,函数表达式失效