JS函數(shù)定義方式的區(qū)別介紹

字號:


    下面小編就為大家?guī)硪黄狫S函數(shù)定義方式的區(qū)別介紹。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,給大家一個(gè)參考。
    關(guān)于JS的函數(shù)定義方式有以下兩種:
    (1)典型的函數(shù)聲明
    function slide(arguments){ 
    //...code
    }
    (2)以函數(shù)表達(dá)式的形式定義函數(shù)
    var slide = function(arguments){
    //...code
    }
    雖然上面兩種方式邏輯上是等價(jià)的,但是還是有點(diǎn)小區(qū)別:
    區(qū)別一:例一中的函數(shù)會在代碼執(zhí)行以前被加載到作用域中,而例二則是在代碼執(zhí)行到那一行的時(shí)候才會有定 義;
    區(qū)別二:函數(shù)聲明會給函數(shù)指定一個(gè)名字,而函數(shù)表達(dá)式則是創(chuàng)建一個(gè)匿名函數(shù),然后將這個(gè)匿名函數(shù)賦給一個(gè)變量;
    看下面例子:
    function factorial(num){
    if(num<=1){
    return 1;
    }
    else {
    return num*arguments.callee(num-1);
    }
    }
    var anotherFactorial = factorial;
    factorial = null;
    console.log(anotherFactorial);//輸出factorial(){},有函數(shù)名
    若是以函數(shù)表達(dá)式定義
    var factorial = function(num){
    //...code
    }
    //...code
    console.log(anotherFactorial);//輸出function(){},匿名函數(shù)
    以上這篇JS函數(shù)定義方式的區(qū)別介紹就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考