位置:首頁 > 軟件操作教程 > 編程開發(fā) > JavaScript > 問題詳情

JavaScript 函數(shù) 使用 arguments

提問人:劉團(tuán)圓發(fā)布時(shí)間:2020-11-25

■知識點(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等。

繼續(xù)查找其他問題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部