上一篇关于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); // 1 alert(demo()); // 10 alert(total); // 10 </script>
匿名函数,可以理解为定了一个函数,但是没有将它赋值给变量。
定义方式如下:
function([parameters]){ statements; [return表达式;] }
匿名函数的调用:
匿名函数没有函数名,也没有指向它的变量,不能像具名函数一样可以在任何地方调用,匿名函数必需在定义后立即执行。
上面已经提到,小括号的作用是将代码块作为函数执行,在小括号内一样可以传递参数,所以,匿名函数可以使用小括号来调用和执行:
(function([parameters]){ // 函数主体部分 })([parameters]);
第一个小括号将函数体包围起来,第二个小括号执行函数体,[parameters]是要传递的参数列表。
例子1:
(function(){ alert("匿名函数"); })();
例子2:
(function(x,y){ alert(x+y); })(1,2);
注意:最后要加上分号“ ; ”,这不是一个代码块,而是调用函数。
例子3:用匿名函数计算1+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相同。
总结:函数名是对函数主体(代码块)的引用,小括号是将代码块作为函数执行。