javascript中,函數的聲明與表達式

今天看書看到一段平常沒太注意的小細節。

一個函數的創建,會有兩種方式:聲明與表達式。

直接上代碼:

    var a = declareFun(1,2);
    console.log(a);
    var b = conveyFun(3,4);
    console.log(b);
    
    function declareFun(num1,num2){
        return num1+num2;
    }
    var conveyFun = function(num3,num4){
        return num3+num4;
    }

平常,我們可能都會不太在意declareFun和conveyFun這兩種創建一個函數的方式。

沒錯。他們的調用是一模一樣的。

都是函數名+括號+參數就可以調用了。

但是,表達式方式創建的函數,或者說,一個匿名函數賦值給一個變量的時候,是會產生先後順序的。

如上面代碼所示,

最終輸出的結果是:

3
testgetset.html:12 Uncaught TypeError: conveyFun is not a function
函數conveyFun是沒法調用的。因爲在變量b調用它的時候,它還沒聲明。


這文章可能比較顯淺,而且一般人也不容易錯。

但是,姑且也當是我的一個讀書筆記吧。

最終我們只要記住一點就可以了:始終在使用函數之前定義它們,你就可以隨意的使用函數聲明或表達式了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章