JavaScript 函數(shù) 使用 arguments
■知識點(diǎn)
arguments對象表示函數(shù)的實(shí)參集合,僅能夠在函數(shù)體內(nèi)可見,并可以直接訪問。
arguments對象是一個(gè)偽類數(shù)組,不能夠繼承Array的原型方法。可以使用數(shù)組下標(biāo)的形式訪問每個(gè)實(shí)參,如arguments[0]表示第1個(gè)實(shí)參,下標(biāo)值從0開始,直到arguments.length-1。其中,length是arguments對象的屬性,表示函數(shù)包含的實(shí)參個(gè)數(shù)。同時(shí),arguments對象可以允許更新其包含的實(shí)參值。
■實(shí)例設(shè)計(jì)
使用arguments對象能夠增強(qiáng)函數(shù)應(yīng)用的靈活性。例如,如果函數(shù)的參數(shù)個(gè)數(shù)不確定,或者函數(shù)參 數(shù)的個(gè)數(shù)很多,而又不想逐一定義每一個(gè)形參,則可以省略定義參數(shù),直接在函數(shù)體內(nèi)使用arguments 對象來訪問調(diào)用函數(shù)的實(shí)參值。
【示例1】下面的示例定義一個(gè)求平均值的函數(shù),函數(shù)借助arguments對象來計(jì)算參數(shù)的平均值。在 調(diào)用函數(shù)時(shí),可以傳入任意多個(gè)參數(shù)。
function avg (){ //求平均數(shù)
var num =0, 1=0; //聲明并初始化臨時(shí)變量
for(var i = 0; i < arguments.length; i ++ ){ //遍歷所有實(shí)參
if (typeof arguments [i] ! = "number") //如果參數(shù)不是數(shù)值
continue; //則忽略該參數(shù)值
num += arguments[i]; //計(jì)算參數(shù)的數(shù)值之和
1 ++ ; //計(jì)算參與和運(yùn)算的參數(shù)個(gè)數(shù)
}
num /= 1; //求平均值
return num; //返平均值
}
console.log(avg(1, 2, 3, 4)); //返回2.5
console.log(avg(1, 2, n3n, 4)); //返回2.3333333333333335
【示例2】在頁面設(shè)計(jì)中經(jīng)常需要驗(yàn)證表單輸入值,下面的示例檢測文本框中輸入的值是否為合法的郵箱地址。
function isEmail(){
if (arguments . length>l) throw new Error (”只能夠傳遞一個(gè)參數(shù)"); //檢測參數(shù)個(gè)數(shù)
var regexp = /A\w+((-\w+)|(\.\w+))*\@[A-Za-zO-9]+
((\.I-) [A-Za-z0-9]+)*\.[A-Za-zO-9]+$/; //定義正則表達(dá)式
if (arguments[0].search(regexp)!= -1) //匹配實(shí)參的值
return true; //如果匹配則返回true
else
return false; //如果不匹配則返回false
}
var email = "zhangsan@css21.cnn"; //聲明并初始化郵箱地址字符串
console.log(isEmail(email)); //返回true
arguments對象是偽類數(shù)組,不是數(shù)組,可以通過length屬性和中括號語法來遍歷或訪問實(shí)參的值。不過,通過動態(tài)調(diào)用的方式,也可以使用數(shù)組的方法,如push、pop、slice等。
點(diǎn)擊加載更多評論>>