乐趣区

关于javascript:javascript函数声明和函数表达式重载

函数申明中,个别类型变量跟函数重名状况

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 函数 

论断:

  • 如果变量申明给与赋值,变量优先于函数申明晋升
  • 如果变量申明未赋值,函数申明优先于变量晋升
  • 如果变量申明给与赋值,变量依照先后顺序失效,前面笼罩后面
  • 如果变量申明未赋值,函数表达式失效
退出移动版