標籤:define 函數名 分類 列表 也有 cut 結合 重載 大量
本文從 5個方面來說明函數。
- 函數的定義,函數是 一組可複用的 代碼。把常用的公用的代碼 封裝成函數,可以避免 來回的複製粘貼 ,既需要 搜尋代碼 又需要粘貼複製的,費時耗力 而且 會造成大量冗餘的代碼。寫成函數,我們只需 調用該函數,傳入必要的參數即可。方便高效。
- 函數的分類:
- 從用途方面 分為 普通函數和建構函式,一個作作普通調用,一個用來 結合 new關鍵字 建立新的函數執行個體;
- 從 構建方式的不同 劃分為 函式宣告和函數運算式,區別如下:
- 函式宣告 結合 function 關鍵字 + 函數名 + ()+{}。 會有 函式宣告的提升。
- 函數運算式可以理解為:變數聲明 、匿名函式宣告 、 賦值運算式 的結合體。既有 變數的提升(初始undefined),也有 匿名函式宣告的提升。
- 函數的屬性:每個函數 都有一些 屬性,這些屬性 有時候會很有用
- length,返回函數的形參的個數。
- prototype,經由本函數構造的執行個體 會繼承的方法的包含所在。
- 某些自定的屬性。。
- 函數內部的屬性,不經由函數+‘ . ‘ 調用的內部屬性:
- arguments:類數組對象,包含傳入的實參。arguments有個屬性 callee 指向 包含arguments的當前函數。
- this。指向當前函數作為方法 歸屬的主體,如果該函數是作為某個對象的方法調用,那麼該函數內部屬性的this指向 該對象。
- 函數的方法:
- call(obj,arg1,arg2):
- 改變函數內部的this指向obj。
- 分別傳入實參 arg1,arg2.。。,跟函數的形參對應。
apply(obj,arguments):
- 改變函數內部的this指向obj。
- 分別傳入實參類數組列表 arguments,跟函數的形參對應。
bind(es5添加):類似於call()方法。
- 返回函數執行個體。
- bind(obj,arg1,arg2)
- 函數this指向 obj。
- 需要調用返回的函數執行個體,才會執行。
- 易錯點:
- js中的函數沒有重載現象(允許多個同名函數,接受不同的參數的存在。),同一範圍下(execution context),只能存在一個同名的函數,或者是變數。如果同名現象存在,後面的會覆蓋前面的。
javascript中的函數