1. 程式人生 > >從零開始的全棧工程師——html篇2.6

從零開始的全棧工程師——html篇2.6

函式

Var 是js的關鍵字,用於宣告變數,宣告在記憶體模組完成,定義(=)是在執行模組完成。

Var可以在記憶體模組提前(js程式碼執行前)完成所以有變數提升這個功能。

因為a沒有帶var,所以不存在變數提升,瀏覽器會把他當成window的屬性。

Function也是js的關鍵字,用於宣告和定義函式的,宣告和定義都在記憶體模組完成了。

Function 也是記憶體模組提前完成,所以有函式提升這個功能。

變數提升和函式提升 都叫預解釋。都是瀏覽器的。

 

1.函式的定義

函式是通過function定義的,function 後跟的是函式名。

結構語法

function fn(){}

通過上圖我們可以發現,記憶體模組只存var的變數名。而存function整個程式碼塊,因為宣告和定義同時完成的

 

2.函式結構注意事項

1)函式名fn可有可無 有名的叫有名函式 無名的叫匿名
2)一定要帶小括號() 裡面放參數

3)函式定義 與 函式呼叫
定義 通過function 定義 function fn (){}

 

 

3.函式定義的四種方式

1)宣告式定義 function fn() {}
2)表示式定義 var fn=function() {} 匿名函式

 

3)自呼叫 定義和呼叫同時完成

(function(){})(   )
~function(){}()        ~
+function(){}()         +
-function(){}()          -
!function(){}()          !

 

4)通過 物件的形式 var as=naw Function(){}

 

 

4.函式呼叫

函式最大的優勢 會形成一個獨立的模組 可以按需使用 可以重複使用
1)按需使用 可以提升效能 重複使用 可以減少冗餘
2)函式呼叫的過程
函式執行時會形成一個自己的私有作用域 最大的作用域是window

然後執行函式裡面的程式碼塊

 

 

5.作用域鏈

作用域鏈:函式內部的變數被呼叫時 首先會在自己的私有作用域下查詢是否有這個變數
有就直接用 沒有就會向他的上一級查詢 父級就是用父級的 父級沒有就會以此繼續向上查詢
直到window為止 widnow有就使用 沒有就is not defined 這種查詢機制我們叫作用域鏈

分析圖

 

6.函式遞迴:函式內部呼叫自身 

分析圖

 

 

7.break和continue

break和continue
break 終止當前程式
continue 跳出當前的程式 執行下一個
break和continue只能用在迴圈語句中
如果條件語句想使用break只能使用return

 

1)return  返回的

每個函式都有一個返回值 如果函式人為return了 返回什麼就是什麼
如果沒有人為返回 結果就是undefined 並且return後面的程式碼不在執行了

 

 

 

 

案例分析

分析圖:

函式內部的return不影響內部的預解釋

 

函式內外的變數

函式外的變數 叫全域性變數 函式內的變數叫私有變數
看變數歸誰 看他在哪個作用域下宣告
私有變數的種類
1.在私有作用域下宣告的
2.通過函式傳參的叫私有變數

 

 

 8.函式傳參     arguments引數

1)Function fn(a,b,c,d){}  將a b c d 叫引數

分析圖

 

2)形參實參

形參   定義上的引數

實參   執行上的引數

 

也可以直接賦值