var getName = function () {console.log(3)}; //[1] function getName (){console.log(4)};//[2] getName()//3 [3] function getName () {console.log(4)}; //[4] var getName = function (){console.log(3)}; //[5] getName() //依旧是3 [6]
==>
function getName (){console.log(4)};//[2] function getName () {console.log(4)}; //[4] var getName;//[1] getName = function () {console.log(3)}; //[1] getName();//3[3] //var getName = function (){console.log(3)}; //[5] getName已经声明,var getName;被忽略 getName = function (){console.log(5)};//[5] getName() //依旧是3 [6]
==>
同名的变量名只申明一次,
变量声明和函数申明都会前提,但是函数申明比变量申明还要提前
声明提升,函数声明提升优先级高于变量声明,所以你这俩例子都是先走的函数声明,再走的表达式
因为function声明的优先级比var声明的优先级高
声明函数会进行提升,函数表达式却不会.