在開始聽到javascript匿名函數就糊涂,對匿名函數仔細研究了一下,也就是那么回事。
首先看一下javascript的函數
1.一般函數定義
function name(args){//statement語句}
調用:name(args);
例子
<script language="javascript">
function add(x,y){
alert(x+y);
}
add(1,2);
</script>
2.采用函數直接命名的方式
var functionname =function(args){//statement語句}
還是上面的函數例子
<script language="javascript">
var add =function (x,y){alert(x+y);}
add(1,2);
</script>
3.采用對象的方式
var functionname =new Function("args","statement語句");
還是上面的函數例子
<script language="javascript">
var add = new Function("x","y","alert(x+y)");
add(1,3);
</script>
然后看匿名函數是如何定義的,看上面的一半函數的使用都會有一個函數名或者對象,從匿名函數這個名詞中就可以知道,匿名函數是不需要名字的。我們從第二種的直接命名方式中演變javascript匿名函數
原來語法var functionname =function(args){//statement語句}
那么從前面賦值看,后面的返回一函數并給了定義的名稱,從調用看是functionname()直接將原來的函數名稱加括號,那么我們演變一下
function(args2){//statement語句}(args1)
直接看來,args1 就是傳遞給args2的,但在實際操作例子中:
<script language="javascript">
function(x,y){alert(x+y);}(1,2);
</script>
這樣操作是不成功的。
為什么?因為function必須返回給一個定義的名稱,那么我們采用匿名函數必須把其獨立出來
<script language="javascript">
(function(x,y){alert(x+y);})(1,2);
</script>
運行成功,這樣就實現了匿名函數
在jquery中就用到了匿名函數。
更多信息請查看IT技術專欄