函数表达式&命名函数表达式&函数声明
1.区别
function(){} 例如这种格式,不带有函数名称的为函数表达式
var fun = function f(){} //赋值表达式的一部分,为函数表达式
(function(){
function f(){}
})()
命名函数表达式就比较好认识了,比如 var fun = function f(){};//不仅有函数名,还有赋值。
如果不声明函数名称,它就是表达式,可如果声明了函数名称的话,通过上下文来区分的,如果是作为赋值表达式的一部分的话,那它就是一个函数表达式,如果被包含在一个函数体内,或者位于程序的最顶部的话,那它就是一个函数声明。
需要注意的:函数声明不管写在哪个位置,尽管是末尾,也是会在同作用域内第一个表达式之前被解析。