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定義的變數全部是全域性變數