函数与变量同名

function a(){ 
   
};
var a = 1;
console.log(a);

输出的结果是:1
相当于

var a;
function a(){ 

};
a = 1;
console.log(a);
function a(){ 
    
};
var a;
console.log(a);

输出结果是:function a()

function a(){ 
    console.log(1)
};
function a(){ 
    console.log(2)
};
console.log(a);

输出结果是: function a( ){
        console.log(2)
       };
分析以上代码总结:

  • 函数声明会置顶
  • 变量声明也会置顶
  • 函数声明比变量声明更置顶,也就是与函数声明同名的变量声明会无效
  • 同名的函数声明后面的会覆盖前面的
  • 同名的变量声明后面的会被忽略
  • 变量和赋值语句一起书写,在js引擎解析时,会将其拆成声明和赋值2部分,声明置顶,赋值保留在原来位置

你可能感兴趣的:(函数与变量同名)