函数声明:
funName()//正常执行
function funName(){
//code
}
函数表达式:
funName() //报错 funName is not a function
var funName=function(){
//code
}
解析器在向执行环境加载数据时,对这两种是有区别的,解析器会率先读取函数声明,以确保在执行任何代码之前可以访问。
而函数表达式,则必须等到解析器执行到他所在的代码才会被真正执行。
举例:
先弹出2,再弹出1.
参考:https://segmentfault.com/q/1010000006776513