這篇文章主要講解了“javascript arguments對象怎么使用”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“javascript arguments對象怎么使用”吧!

公司主營業(yè)務(wù):網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)建站是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)建站推出淥口免費做網(wǎng)站回饋大家。
javascript arguments對象的用法:1、獲取實參和形參的個數(shù);2、修改實參值;3、改變實參的個數(shù);4、檢測用戶傳遞的參數(shù)是否符合要求;5、函數(shù)的參數(shù)個數(shù)不確定時,用于訪問調(diào)用函數(shù)的實參值;6、遍歷或訪問實參的值。
本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版、Dell G3電腦。
arguments 對象表示函數(shù)的實參集合,僅能夠在函數(shù)體內(nèi)可見,并可以直接訪問。
arguments 對象的 length 屬性和 callee 屬性最為常用:
使用 length 屬性可以獲取函數(shù)的實參個數(shù)。arguments 對象只能在函數(shù)體內(nèi)可見,因此 arguments.length 也只能在函數(shù)體內(nèi)使用。
使用 callee 屬性可以引用當(dāng)前 arguments 對象所在的函數(shù)。使用 callee 屬性可以在函數(shù)體內(nèi)調(diào)用函數(shù)自身。在匿名函數(shù)中,callee 屬性比較有用。例如,利用它可以設(shè)計遞歸調(diào)用。
示例1:獲取實參和形參的個數(shù)
使用 arguments.length 屬性可以獲取函數(shù)的實參個數(shù)。使用函數(shù)對象的 length 屬性可以獲取函數(shù)的形參個數(shù),該屬性為只讀屬性,在函數(shù)體內(nèi)、體外都可以使用。
下面示例設(shè)計一個 checkArg() 函數(shù),用來檢測一個函數(shù)的形參和實參是否一致,如果不一致則拋出異常。
function checkArg(a) { //檢測函數(shù)實參與形參是否一致
if (a.length != a.callee.length) //如果實參與形參個數(shù)不同,則拋出錯誤
throw new Error("實參和形參不一致");
}
function f(a, b) { //求兩個數(shù)的平均值
checkArg(arguments); //根據(jù)arguments來檢測函數(shù)實參和形參是否一致
return ((a * 1 ? a : 0) + (b * 1 ? b : 0)) / 2; //返回平均值
}
console.log(f(6)); //拋出異常。調(diào)用函數(shù)f,傳入一個參數(shù)示例2:在函數(shù)內(nèi)部修改實參的值
在下面示例中使用 for 循環(huán)遍歷 arguments 對象,然后把循環(huán)變量的值傳入 arguments,以便于改變實參值。
function f() {
for (var i = 0; i < arguments.length; i++) { //遍歷arguments對象
arguments[i] = i; //修改每個實參的值
console.log(arguments[i]); //提示修改的實參值
}
}
f(3, 3, 6); //返回提示0、1、2,而不是3、3、6示例3:改變函數(shù)實參的個數(shù)
通過修改 length 屬性值,也可以改變函數(shù)的實參個數(shù)。當(dāng) length 屬性值增大時,則增加的實參值為 undefined;如果 length 屬性值減小,則會丟棄 length 長度值之后的實參值。
function f() {
arguments.length = 2; //修改arguments屬性對象的length屬性值
for (var i = 0; i < arguments.length; i ++) {
console.log(arguments[i]);
}
}
f(3, 3, 6); //返回提示3、3示例4:檢測用戶傳遞的參數(shù)是否符合要求
在下面示例中,使用 arguments.callee 獲取匿名函數(shù),然后通過函數(shù)的 length 屬性獲取函數(shù)形參個數(shù),最后比較實參個數(shù)與形參個數(shù),以檢測用戶傳遞的參數(shù)是否符合要求。
function f(x,y,z) {
var a = arguments.length(); //獲取函數(shù)實參的個數(shù)
var b = arguments.callee.length; //獲取函數(shù)形參的個數(shù)
if (a != b_ { //如果實參和形參個數(shù)不相等,則提示錯誤信息
throw new Error("傳遞的參數(shù)不匹配");
}else { //如果實參和形參個數(shù)相同,則返回它們的和
return x + y + z;
}
}
console.log(f(3,4,5)); //返回值12arguments.callee 等價于函數(shù)名,在上面示例中,arguments.callee 等于 f。
arguments 對象的應(yīng)用
在實際開發(fā)中,arguments 對象非常有用。靈活使用 arguments 對象,可以提升使用函數(shù)的靈活性,增強函數(shù)在抽象編程中的適應(yīng)能力和糾錯能力。下面結(jié)合幾個典型示例展示 arguments 的應(yīng)用。
1)使用 arguments 對象能夠增強函數(shù)應(yīng)用的靈活性。例如,如果函數(shù)的參數(shù)個數(shù)不確定,或者函數(shù)的參數(shù)個數(shù)很多,而又不想逐一定義每一個形參,則可以省略定義參數(shù),直接在函數(shù)體內(nèi)使用 arguments 對象來訪問調(diào)用函數(shù)的實參值。
示例1
下面示例定義一個求平均值的函數(shù),該函數(shù)借助 arguments 對象來計算參數(shù)的平均值。在調(diào)用函數(shù)時,可以傳入任意多個參數(shù)。
function avg() { //求平均值
var num = 0, 1 = 0; //聲明并初始化臨時變量
for (var i = 0; i < arguments.length; i ++) { //遍歷所有實參
if (typeof arguments[i] != "number") //如果參數(shù)不是數(shù)值
continue; //則忽略該參數(shù)值
num += arguments[i]; //計算參數(shù)的數(shù)值之和
1 ++; //計算參與和運算的參數(shù)個數(shù)
}
num /= 1; //求平均值
return num; //返回平均值
}
console.log(avg(1,2,3,4)); //返回2.5
console.log(avg(1,2,"3",4)); //返回2.3333333333333335示例2
在頁面設(shè)計中經(jīng)常需要驗證表單輸入值,下面示例檢測文本框輸入的值是否為合法的郵箱地址。
function isEmail() {
if (arguments.length > 1) throw new Error("只能夠傳遞一個參數(shù)"); //檢測參數(shù)個數(shù)
var regexp = /^\w+((-\w+) | (\.\w+)) *\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)8\.[A-Za-z0-9]+$/; //定義正則表達式
if (arguments[0].search(regexp) != -1) //匹配實參的值
return true; //如果匹配則返回true
else
return false; //如果不匹配則返回false
}
var email = "1798017447@qq.com"; //聲明并初始化郵箱地址字符串
console.log(isEmail(email)); //返回true2)arguments 對象是偽類數(shù)組,不是數(shù)組,可以通過 length 屬性和中括號語法來遍歷或訪問實參的值。不過,通過動態(tài)調(diào)用的方法,也可以使用數(shù)組的方法,如 push、pop、slice 等。
示例3
使用 arguments 可以模擬重載。實現(xiàn)方法:通過 arguments.length 屬性值判斷實際參數(shù)的個數(shù)和類型,決定執(zhí)行不同的代碼。
function sayHello() {
switch(arguments.length) {
case 0 :
return "Hello";
case 1 :
return "Hello, " + arguments[0];
case 2 :
return (arguments[1] == "cn" ? "你好, " : "Hello, ") + arguments[0];
};
}
console.log(sayHello()); //"Hello"
console.log(sayHello("Alex")); //"Hello,Alex"
console.log(sayHello("Alex", "vn")); //"你好,Alex"示例4
下面示例使用動態(tài)調(diào)用的方法,讓 arguments 對象調(diào)用數(shù)組方法 slice(),可以把函數(shù)的參數(shù)對象轉(zhuǎn)換為數(shù)組。
function f() {
return [].slice.apply(arguments);
}
console.log(f(1,2,3,4,5,6)); //返回[1,2,3,4,5,6]感謝各位的閱讀,以上就是“javascript arguments對象怎么使用”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對javascript arguments對象怎么使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!
名稱欄目:javascriptarguments對象怎么使用
文章來源:http://chinadenli.net/article22/jhjpjc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計公司、品牌網(wǎng)站設(shè)計、用戶體驗、品牌網(wǎng)站制作、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)