function fnName(){xxxx}; // 函數聲明:使用function關鍵字聲明一個函數,在指定一個函數名。 //例如:(正常,因為 提升 了函數聲明,函數調用可以在函數聲明之前) fnName(); function fnName(){ alert('Hello World'); } var fnName = function(){xxxx}; //函數表達式:使用function關鍵字聲明一個函數,但是未給函數命名,最后將匿名函數賦予給一個變量。 //例如1:(報錯,變量fnName還未保存對函數的引用,函數調用必須在函數表達式之后) fnName(); var fnName = function(){ alert('Hello World'); } //例如2:(正常,函數表達式后面加括號,當JavaScript引擎解析到此處時能立即調用函數) var fnName = function(){ alert('Hello World'); }(); //例如3:(報錯,JavaScript引擎只解析函數聲明,忽略后面的括號,函數聲明不會被調用) function fnName(){ alert('Hello World'); }(); function(){xxxx}; //匿名函數:使用function關鍵字聲明一個函數,但是未給函數命名,所以叫匿名函數,匿名函數屬於函數表達式, //匿名函數有很多作用,賦予一個變量則創建函數,賦予一個事件則成為事件處理程序或者創建閉包等等。 //例如:(語法錯誤,語法錯誤,雖然匿名函數屬於函數表達式,但是未進行賦值操作,所以javascript引擎將開頭的function關鍵字當做函數聲明,報錯:要求需要一個函數名) function(){ alert('Hello World'); }();

先來給大家看兩個小例子:(1)
var foo = 1; (function(){ console.log(foo); var foo = 2; console.log(foo); })();
輸出:undefined 和 2
(2)
var foo = 'Hello'; (function(){ console.log(foo); var bar = 'world'; console.log(foo + bar); })(); console.log(foo + bar);

如果我的內容對你有幫助,歡迎打賞

