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