干熟妇在线视频午夜剧场一级A级|99成人香视频日本两性激情视频|久久 午夜福利无码精品人妻一区|热久久超碰精品精品少妇一区二区|五月天综合在线国产一区免费视频|亚洲成人中心热re久久99|亚洲国产怡红院丁香五月综合h|玖玖九久久久午夜射精视频

十年專注于品牌網(wǎng)站建設(shè) 十余年專注于網(wǎng)站建設(shè)_小程序開發(fā)_APP開發(fā),低調(diào)、敢創(chuàng)新、有情懷!
南昌百恒網(wǎng)絡(luò)微信公眾號(hào) 掃一掃關(guān)注
小程序
tel-icon全國服務(wù)熱線:400-680-9298,0791-88117053
掃一掃關(guān)注百恒網(wǎng)絡(luò)微信公眾號(hào)
掃一掃打開百恒網(wǎng)絡(luò)微信小程序

百恒網(wǎng)絡(luò)

南昌百恒網(wǎng)絡(luò)

結(jié)合實(shí)例初步介紹ECMAScript函數(shù)中的參數(shù)概念及意義

百恒網(wǎng)絡(luò) 2012-02-29 5634

理解參數(shù)

ECMAScript函數(shù)的參數(shù)與大多數(shù)其他語言中函數(shù)的參數(shù)有所不同。ECMAScript函數(shù)不介意傳遞進(jìn)來多少個(gè)參數(shù),也不在乎傳進(jìn)來參數(shù)是什么數(shù)據(jù)類型。也就是說,即便你定義的函數(shù)只接收兩個(gè)參數(shù),在調(diào)用這個(gè)函數(shù)時(shí)也未必一定要傳遞兩個(gè)參數(shù)。可以傳遞一個(gè)、三個(gè)甚至不傳遞參數(shù),而觶析器永遠(yuǎn)不會(huì)有什么怨言。之所以會(huì)這樣,原因是ECMAScript中的參數(shù)在內(nèi)部是用一個(gè)數(shù)組來表示的。函數(shù)接收到的始終都是這個(gè)數(shù)組,而不關(guān)心數(shù)組中包含哪些參數(shù)(如果有參數(shù)的話)。如果這個(gè)數(shù)組中不包含任何元素,無所謂;如果包含多個(gè)元素,也沒有問題。實(shí)際上,在函數(shù)體內(nèi)可以通過arguments對(duì)象來訪問這個(gè)參數(shù)數(shù)組,從而獲取傳遞給函數(shù)的每一個(gè)參數(shù)。

其實(shí),arguments對(duì)象只是與數(shù)組類似(它并不是Array的實(shí)例),因?yàn)榭梢允褂梅嚼ㄌ?hào)語法訪問它的每一個(gè)元素(即第一個(gè)元素是arguments[o],第二個(gè)元素是argumetns [1],以此類推),使用length屬性來確定傳遞進(jìn)來多少個(gè)參數(shù)。在前面的例子中,sayHi()函數(shù)的第一個(gè)參數(shù)的名字叫name,而該參數(shù)的值也可以通過訪問arguments[o]來獲取。因此,南昌網(wǎng)站建設(shè)公司工程師提示,那個(gè)函數(shù)也可以像下面這樣重寫,即不顯式地使用命名參數(shù):

function sayHi() {

alert( "Hello"+arguments[0]+","+arguments[1]);}

sayHi( "Nicholas”,"how are you today?");

這個(gè)重寫后的函數(shù)中不包含命名的參數(shù)。雖然沒有使用name和message標(biāo)識(shí)符,但函數(shù)的功能依舊。這個(gè)事實(shí)說明了ECMAScript函數(shù)的一個(gè)重要特點(diǎn):命名的參數(shù)只提供便利,但不是必需的。另外,在命名參數(shù)方面,其他語言可能需要事先創(chuàng)建一個(gè)函數(shù)簽名,而將來的調(diào)用必須與該簽名一致。但在ECMAScript中,沒有這些條條框框,解析器不會(huì)驗(yàn)證命名參數(shù)。

通過訪問arguments對(duì)象的length屬性可以獲知有多少個(gè)參數(shù)傳遞給了函數(shù)。下面這個(gè)函數(shù)會(huì)在每次被調(diào)用時(shí),輸出傳入其中的參數(shù)個(gè)數(shù):

function howManyArgs() {

alert (arguments.length);

}

howManyArgs(”string”,45); //2

howManyArgs(); //0

howManyArgs {12); //1

執(zhí)行以上代碼會(huì)依次出現(xiàn)3個(gè)警告框,分別顯示2、0和l。由此可見,南昌建網(wǎng)站公司工程師提示,開發(fā)人員可以利用這一點(diǎn)讓函數(shù)能夠接收任意個(gè)參數(shù)并分別實(shí)現(xiàn)適當(dāng)?shù)墓δ堋U埧聪旅娴睦樱?

function doAdd() {

if (arguments.length==1) {

alert (arguments[0]+10);

) else if(arguments.length==2) {

alert( arguments[O] +arguments [1]);

}

}

doAdd (10); //20

doAdd(30,20); //50

函數(shù)doAdd()會(huì)在只有一個(gè)參數(shù)的情況下給該參數(shù)加上10;如果是兩個(gè)參數(shù),則將那個(gè)參數(shù)簡單相加并返回結(jié)果。因此,南昌網(wǎng)站制作公司工程師提示,doAdd(10)會(huì)返回20,而doAdd(30,20)則返回50。雖然這個(gè)特性算不上完美的重載,但也足夠彌補(bǔ)ECMAScript的這一缺憾了。

另一個(gè)與參數(shù)相關(guān)的重要方面,就是arguments對(duì)象可以與命名參數(shù)一起使用,如下面的例子所示:

function doAdd(numl, num2){

if(arguments.length ==1){

alert(numl+10);

}else if (arguments.length == 2)

alert(arguments[o]+num2);

}}

doAdd (10); //20

doAdd(30,20); //50

在此,南昌做網(wǎng)站公司工程師經(jīng)驗(yàn)總結(jié),在重寫后的這個(gè)doAdd()函數(shù)中,兩個(gè)命名參數(shù)都與arguments對(duì)象一起使用。由于numl的值與arguments[o]的值相同,因此它們可以互換使用(當(dāng)然,num2和arguments [1J也是如此)。 關(guān)于參數(shù)還要記住最后一點(diǎn):沒有傳遞值的命名參數(shù)將自動(dòng)被賦予undefined值。這就跟定義了變量但又沒有初始化一樣。例如,如果只給doAdd()函數(shù)傳遞了一個(gè)參數(shù),則num2中就會(huì)保存 undefined值。

ECMAScript中的所有參數(shù)傳遞的都是值,不可能通過引用傳遞參數(shù)。

希望本文對(duì)廣大站長或從事企業(yè)網(wǎng)站建設(shè)公司的團(tuán)隊(duì)有所幫助,如對(duì)此不太理解的,可以與南昌網(wǎng)絡(luò)公司百恒網(wǎng)絡(luò)技術(shù)部聯(lián)系。我們很高興與廣大站長和從事企業(yè)網(wǎng)站建設(shè)公司技術(shù)人員分享我們的技術(shù)和經(jīng)驗(yàn)。


400-680-9298,0791-88117053
掃一掃關(guān)注百恒網(wǎng)絡(luò)微信公眾號(hào)
掃一掃打開百恒網(wǎng)絡(luò)小程序

歡迎您的光顧,我們將竭誠為您服務(wù)×

售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售后服務(wù) 售后服務(wù)
 
售后服務(wù) 售后服務(wù)
 
備案專線 備案專線
 
×
泽普县| 方山县| 阿图什市| 阿坝县| 射洪县| 罗甸县| 上思县| 兴化市| 美姑县| 定襄县| 莱阳市| 伊宁市| 清徐县| 菏泽市| 基隆市| 石河子市| 治多县| 伽师县| 濮阳市| 饶平县| 吉隆县| 温宿县| 曲水县| 友谊县| 黄山市| 余江县| 镇江市| 灵山县| 邢台市| 漯河市| 普陀区| 砚山县| 余姚市| 富川| 泰顺县| 缙云县| 丰都县| 昭平县| 枣阳市| 千阳县| 永丰县|