javascript 匿名函數(shù)

字號:


    在開始聽到javascript匿名函數(shù)就糊涂,對匿名函數(shù)仔細研究了一下,也就是那么回事。
    首先看一下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ù)。