变量提升 【预解析】

  • 带var的只是提前声明
  • 带function 的是提前声明 + 赋值

真实项目中推荐大家使用函数表达式的方式去创建使用 【规范函数执行顺序】
var fn = function(){}
fn()
匿名函数具名化 【】更规范一些
var fn = function sum(){
console.log(sum) //具名化的名字可以在函数内部使用[代表函数本身] 默认情况下,其值不能被修改,但是优先级是比较低的,一旦出现其他同名的声明方式,则一其他方式为主
}
fn()
sum() // sum is not defined
匿名函数具名化,设置的函数下不能再函数以外使用 因为并没有在当前的上下文中声明这个变量,

自执行函数
(function anonymous(a){
if(a < 0) return
// 递归调用
anonymous(a -1)
})(100)