1、函數(shù)聲明:function fnName () {…};使用function關(guān)鍵字聲明一個函數(shù),再指定一個函數(shù)名
2、函數(shù)表達(dá)式:var fnName = function () {…};使用function關(guān)鍵字聲明一個函數(shù),但未給函數(shù)命名,最后將匿名函數(shù)賦予一個變量
3、匿名函數(shù):function () {}; 使用function關(guān)鍵字聲明一個函數(shù),但未給函數(shù)命名
fnName();
function fnName(){
...
}
//正常,因?yàn)椤嵘?了函數(shù)聲明,函數(shù)調(diào)用可在函數(shù)聲明之前
fnName();
var fnName=function(){
...
}
//報錯,變量fnName還未保存對函數(shù)的引用,函數(shù)調(diào)用必須在函數(shù)表達(dá)式之后
function fnName () {…}(); 報錯
var fnName = function () {…}(); 立即執(zhí)行
(function(){})()
模擬一個私有作用域,該方法內(nèi)克訪問全局變量,外部無法訪問該方法內(nèi)變量,防止多人開發(fā)時,同名變量覆蓋