摘要:三參數規則函數定義時形式參數沒有指定數據類型。函數對實際參數的個數沒有進行檢測。通常函數只保留靠前的參數,而省略靠后的參數。
一、參數概念
函數運行的時候,有時需要提供外部數據,不同的外部數據會得到不同的結果,這種外部數據就叫參數。1.1 示例
上式的 x 就是square函數的 參數。每次運行的時候,需要提供這個值,否則得不到結果。
二、形式參數和實際參數 2.1 形式參數在函數定義時列出。 2.2 實際參數在函數調用時傳遞給函數真正的值。形式參數和實際參數是不同的變量,他們在內存中處于不同的位置,形式參數在函數運行結束時將被釋放。
三、參數規則 3.1 函數定義時形式參數沒有指定數據類型。 3.2 函數對實際參數沒有進行類型檢測。 3.3 函數對實際參數的個數沒有進行檢測。 四、默認參數如果函數在調用時未提供實際參數,參數會默認設置為: undefined
如果y已經定義 , y || 返回 y, 因為 y 是 true, 否則返回 0, 因為 undefined 為 false。
五、參數個數 5.1 實參比形參少(1)當調用函數時傳遞的實參比函數定義時的形參個數少,剩下的形參都將設置為 undefined 值。
(2)通常函數只保留靠前的參數,而省略靠后的參數。如果一定要省略靠前的參數,只有顯式傳入 undefined。
5.2 實參比形參多(1)如果函數調用時設置了過多的實際參數,剩下的實際參數沒有方法直接獲取,需要使用即將提到的arguments對象。
六、Arguments(實參)對象 6.1 定義(1)由于 JavaScript 允許函數有不定數目的參數,所以需要一種機制,可以在函數體內部讀取所有參數。這就是arguments對象的由來。
(2)arguments對象包含了函數運行時的所有參數,arguments[0]就是第一個參數,arguments[1]就是第二個參數,以此類推。這個對象只有在函數體內部,才可以使用。
6.2 示例(1)
(2)
5.3 length屬性(1)通過arguments對象的length屬性,可以判斷函數調用時傳遞的實際參數個數。
(2)注意
arguments對象的length屬性顯示實參的個數,函數的length屬性顯示形參的個數
(3)形參只是提供便利,但不是必需的
5.4 和數組的關系(1)需要注意的是,雖然arguments很像數組,但它是一個對象。數組專有的方法(比如slice和forEach),不能在arguments對象上直接使用。
(2)如果要讓arguments對象使用數組方法,真正的解決方法是將arguments轉為真正的數組。
(3)下面是兩種常用的轉換方法:slice方法和逐一填入新數組。
5.5 callee 屬性(1)arguments對象有一個名為callee的屬性,該屬性是一個指針,指向擁有這個arguments對象的函數。
(2)下面是經典的階乘函數
(3) 但是,上面這個函數的執行與函數名緊緊耦合在了一起,可以使用arguments.callee可以消除函數解耦
(4) 但在嚴格模式下,訪問這個屬性會拋出TypeError錯誤
(5)這時,可以使用具名的函數表達式
閱讀更多
參考文章
函數
深入理解javascript函數系列第二篇——函數參數
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/93982.html
摘要:每個函數表達式包括函數對象括號和傳入的實參組成。和作用都是動態改變函數體內指向,只是接受參數形式不太一樣。在定義函數時,形參指定為一個對象調用函數時,將整個對象傳入函數,無需關心每個屬性的順序。 函數 JavaScript中,函數指只定義一次,但可以多次被多次執行或調用的一段JavaScript代碼。與數組類似,JavaScript中函數是特殊的對象,擁有自身屬性和方法 每個函數對象...
摘要:函數使用它們實參的值來計算返回值,稱為該函數調用表達式的值。通常函數名的第一個字符為小寫。在函數內部定義的變量,外部無法讀取,稱為局部變量。注意對于命令來說,局部變量只能在函數內部聲明,在其他區塊中聲明,一律都是全局變量。 函數 1.函數簡介 通過函數可以封裝任意多條語句,而且可以在任何地方、任何時候調用。 ECMAScript中的函數使用function關鍵字來聲明,后跟一組參數以及...
摘要:在客戶端中,一些方法等也返回類數組對象。對象接下來重點講講對象。在函數體中,指代該函數的對象。下一篇文章深入之創建對象的多種方式以及優缺點深入系列深入系列目錄地址。 JavaScript深入系列第十三篇,講解類數組對象與對象的相似與差異以及arguments的注意要點 類數組對象 所謂的類數組對象: 擁有一個 length 屬性和若干索引屬性的對象 舉個例子: var array = ...
摘要:參數引用函數的上下文,函數上下文來自于等面向對象語言,中的依賴于函數聲明。沒有重載函數沒有簽名,因為其參數是由包含零或多個值的數組來表示的。這就是重載函數。重載函數常用來實現功能類似而所處理的數據類型不同的問題。 1 函數參數 函數的實參和形參個數可以不等,之所以會這樣,原因是 ECMAScript 中的參數在內部是用一個數組來表示的。函數接收到的始終都是這個數組,而不關心數組中包含哪...
摘要:參數引用函數的上下文,函數上下文來自于等面向對象語言,中的依賴于函數聲明。沒有重載函數沒有簽名,因為其參數是由包含零或多個值的數組來表示的。這就是重載函數。重載函數常用來實現功能類似而所處理的數據類型不同的問題。 1 函數參數 函數的實參和形參個數可以不等,之所以會這樣,原因是 ECMAScript 中的參數在內部是用一個數組來表示的。函數接收到的始終都是這個數組,而不關心數組中包含哪...
閱讀 2454·2021-11-23 09:51
閱讀 503·2019-08-30 13:59
閱讀 1820·2019-08-29 11:20
閱讀 2529·2019-08-26 13:41
閱讀 3239·2019-08-26 12:16
閱讀 729·2019-08-26 10:59
閱讀 3321·2019-08-26 10:14
閱讀 602·2019-08-23 17:21