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