/** * 第二部分:能在定義時就能執行的方法的寫法 function(){...}(); */ /** * 一、普通的方法的定義與執行 */ // 1-1、普通的方法定義,不帶返回值的情況 fun = function() { alert("執行"); }; // 1-2、普通的方法執行,不帶返回值的情況 // fun();// 輸出結果:執行 // 2-1、普通的方法定義,帶返回值,且返回值是個字符串的情況 fun = function() { alert("執行"); return "返回的是字符串"; } // 2-2、普通的方法執行,帶返回值,且返回值是個字符串的情況 // fun();// 輸出結果:執行 // 2-3、普通的方法執行,帶返回值,且返回值是個字符串的情況,並將返回值輸出 // alert(fun());// 輸出結果:執行,返回的是字符串,(分別是兩次警告框形式出現),原因是,先執行fun(),然後會帶回返回的字符串,再通過alert輸出 // alert(typeof fun());// 輸出結果:執行,string // 3-1、普通的方法定義,帶返回值,且返回值是個object的情況 fun = function() { alert("執行"); return new Date(); } // 3-2、普通的方法執行,帶返回值,且返回值是個object的情況 // fun();// 輸出結果:執行 // 3-3、普通的方法執行,帶返回值,且返回值是個object的情況,並將返回值輸出 // alert(fun());// 輸出結果:執行,Wed May 14 16:25:32 UTC+0800 2008 // 3-4、普通的方法執行,帶返回值,且返回值是個object的情況,並將返回值類型輸出 // alert(typeof fun());// 輸出結果:執行,object // 4-1、普通的方法執行,帶返回值,且返回值是個function的情況 fun = function() { alert("執行"); return function() { alert("返回類型是個方法"); }; } // 4-2、普通的方法執行,帶返回值,且返回值是個function的情況 // fun();// 輸出結果:執行 // 4-3、因爲fun()執行後返回的是個function,所以根據這個返回的function的參數情況(比如參數的個數和類型)再執行一次返回的function, // 因爲此處這個返回的function是不需要參數的,所以就可以直接用()來執行 // fun()();// 輸出結果:執行,返回類型是個方法 // 3-4、普通的方法執行,帶返回值,且返回值是個object的情況,並將返回值類型輸出 // alert(typeof fun());// 輸出結果:執行,function /** * 定義時就能執行 */ fun = function(){ alert("執行"); }(); //alert(fun); fun = function(){ alert("執行"); return "返回的是字符串";// 返回的是個字符串 }(); //alert(fun) fun = function(){ alert("執行"); return new Date();// 返回的是個object }(); alert(fun); fun = function(){ alert("執行"); return function(){ alert("返回類型是個方法"); }// 返回的是個方法 }(); fun();