1. 程式人生 > >2018.9.14 關於對JS函式的理解的總結

2018.9.14 關於對JS函式的理解的總結

  今天是2018.9.14星期五,下午16:00整,今天是我們公司是雙休的,也就是說週末放假兩天!今天下午我的內心的是很浮躁的,看著螢幕裡面的程式碼,心卻早已飛向遠方。我知道這樣很不好,但是就是有那麼一段時間很煩躁的。真的希望我能改掉這個壞毛病。時間過得真快,轉眼間來到公司當實習生已經半個月了,要說半個月在公司學到了什麼,我好想說不出來,只知道公司是專門做琴房管理系統的,就是軟硬體結合的公司。這半個月都是自己在跟著視訊進行學習,上面也沒有給我佈置任務,我就自己一個人默默地跟著視訊學習。管他呢,到時候老闆肯定也會佈置任務的。先好好的學習吧,只有自己有技術才是王道,慢慢來慢慢來,不著急不著急。既然很煩躁的話,那就總結一下,今天所學到的js把!

-----------------------分割線-------------------------

首先在使用函式的時候要了解函式的三要素:

  1.首先先用註釋說明函式的需求

  2.然後在函式中寫明要傳的引數

  3.最後寫清楚返回值

js函式可分為:

  //無引數無返回值

  //有引數有返回值

  //有引數無返回值、

  //無引數有返回值

關於返回值問題:

  //如果return 後面跟內容了,就返回return後面的內容

  //如果return後面沒有跟內容就返回undefined

  //如果函式後面沒有寫return就返回undefined

關於引數問題

  //函式在進行呼叫的時候,會把實參的數 複製一份傳遞給getSum函式

  //在js函式裡面是可以形參和實參個數不一樣的。

在其他語言中有過載的概念但是在js裡面是沒有過載的概念的:

  //過載:函式名字相同,但是引數個數相同

  //在js中沒有過載的概念。

  //相同名稱的函式會把上面你的函式進行覆蓋,所以在js中不能出現同名的函式。

函式定義的兩種形式:

  1.函式的宣告:function fun(){};

  2.函式的表示式:var myfun=function(){};

  上面兩種方式的區別

      函式宣告:整個函式的提升

      函式表示式:只是變數在提升

過程是這樣子的:

   解析器: 

               //全域性作用域

                 //預解析------>找到了 var a; function f1(){};

                //然後再進行一行一行的執行程式碼

                     //a = 18;

                    //f1();

                         ---f1的區域性作用域

                             ---預解析--->var b; var a;

                             ----然後在從上到下一行一行的執行程式碼

解析過後最終的程式碼變成了這樣:

最後輸出為:is not defined 還有 9

這裡要注意的是:在函式內部進行獲取變數的時候,會先在當前的作用域上進行尋找,有沒有變數宣告,如果有就返回當前變數宣告,如果沒有的話就上一級進行尋找變數的值

作用域問題:

  //全域性作用域:

     //1.在<script>標籤中定義的變數---全域性變數

     //2.不使用var宣告的變數也是----全域性變數。

     //3.當關閉網頁或者瀏覽器時網頁才會進行釋放

  區域性作用域

     //1.只有在函式中內部使用var定義的變數才是區域性變數

     //2.超出函式的使用範圍後,區域性變數會被銷燬

   js中沒有塊級作用域

     //if或者var定義的變數全部是全域性變數