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