上一篇關於javascript匿名函數的部落格:http://blog.csdn.net/wusuopuBUPT/article/details/14522631
首先列舉下常見的幾種聲明javascript函數的方法:
function demo(){ // 函數主體部分}
它的實質,是將函數主體賦值給了demo變數,這個函數主體是:
function(){ // 函數主體部分}
所以,demo() 函數也可以這樣定義:
var demo=function(){ // 函數主體部分}
可以這樣來調用函數:
demo();
小括弧的作用是將demo變數所指向的函數主體(代碼塊)作為函數執行。
如果不加小括弧,函數主體僅僅是一段文本,一段字串,不會執行。
舉個栗子:
<script>var total = 1;var demo = function() {total = 10;return total;}alert(demo); //輸出函數體alert(total); // 1alert(demo()); // 10alert(total); // 10</script>
匿名函數
匿名函數,可以理解為定了一個函數,但是沒有將它賦值給變數。
定義方式如下:
function([parameters]){ statements; [return運算式;]}
匿名函數的調用:
匿名函數沒有函數名,也沒有指向它的變數,不能像具名函數一樣可以在任何地方調用,匿名函數必需在定義後立即執行。
上面已經提到,小括弧的作用是將代碼塊作為函數執行,在小括弧內一樣可以傳遞參數,所以,匿名函數可以使用小括弧來調用和執行:
(function([parameters]){ // 函數主體部分})([parameters]);
第一個小括弧將函數體包圍起來,第二個小括弧執行函數體,[parameters]是要傳遞的參數列表。
例子1:
(function(){ alert("匿名函數");})();
例子2:
(function(x,y){ alert(x+y);})(1,2);
注意:最後要加上分號“ ; ”,這不是一個代碼塊,而是調用函數。
例子3:用匿名Function Compute1+2+3+...+99+100的值。
<script language="JavaScript" type="text/javascript">(function(m,n){ var total=0; if(m>=n){ alert(" 數值範圍不正確。 "); return false; } for(var i=m;i<=n;i++){ total+=i; } alert(total);})(1,100);</script>
儲存並執行代碼,彈出警告框,顯示 5050 ,匿名函數成功執行了。
例子4:
有傳回值的匿名函數。
<script language="JavaScript" type="text/javascript">alert( (function(m,n){ var total=0; if(m>=n){ alert(" 數值範圍不正確。 "); return false; } for(var i=m;i<=n;i++){ total+=i; } return total; })(1,100) // 這裡不要加分號);</script>
儲存並執行代碼,結果與例子3相同。
總結:函數名是對函數主體(代碼塊)的引用,小括弧是將代碼塊作為函數執行。
參考:http://www.itxueyuan.org/view/6314.html