中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaScript中Arguments對象有哪些用途

發布時間:2021-08-30 13:49:00 來源:億速云 閱讀:134 作者:小新 欄目:開發技術

小編給大家分享一下JavaScript中Arguments對象有哪些用途,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

用途總結:

JavaScript中Arguments對象有哪些用途

Arguments 的基本概念

Arguments 是一個對應于傳遞給函數的參數的類數組對象。

JavaScript中Arguments對象有哪些用途

Arguments 是個類似數組但不是數組的對象,說它類似數組是因為其具備數組相同的訪問性質及方式,能夠由 arguments[n] 來訪問對應的單個參數的值,并擁有數組長度屬性 length。還有就是 Arguments 對象存儲的是實際傳遞給函數的參數,而不局限于函數聲明所定義的參數列表,而且不能顯式創建 Arguments 對象。

下面是一個簡單使用 Arguments 的示例:

function func1(a, b, c) {
    console.log(arguments[0]);
    console.log(arguments[1]);
    console.log(arguments[2]);
}

func1(1, 2, 3);
// 1
// 2
// 3

我們可以在函數內部,直接通過 arguments 來獲取所傳入的參數集合,然后以數組的獲值形式獲取對應位置的參數值。

Arguments 的作用

作為 JavaScript 中的一個特殊對象,Arguments 具有哪些用途,或者說是該怎么用呢?

獲取實參和形參的個數

使用 arguments.length 屬性可以獲取函數的實參個數。使用函數對象的 length 屬性可以獲取函數的形參個數,該屬性為只讀屬性,在函數體內、體外都可以使用。

下面示例設計一個 checkArg() 函數,用來檢測一個函數的形參和實參是否一致,如果不一致則拋出異常。

function checkArg(a) {
    //檢測函數實參與形參是否一致
    if (a.length != a.callee.length)
        //如果實參與形參個數不同,則拋出錯誤
        throw new Error("實參和形參不一致");
}

function f(a, b) {
    //求兩個數的平均值
    checkArg(arguments); //根據arguments來檢測函數實參和形參是否一致
    return ((a * 1 ? a : 0) + (b * 1 ? b : 0)) / 2; //返回平均值
}
console.log(f(6)); //拋出異常。調用函數f,傳入一個參數

修改實參值

在下面示例中使用 for 循環遍歷 arguments 對象,然后把循環變量的值傳入 arguments,以便于改變實參值。

function f() {
    for (let i = 0; i < arguments.length; i++) {  //遍歷arguments對象
        arguments[i] = i;  //修改每個實參的值
        console.log(arguments[i]);  //提示修改的實參值
    }
}

f(3, 3, 6);  //返回提示0、1、2,而不是3、3、6

改變實參的個數

通過修改 length 屬性值,也可以改變函數的實參個數。當 length 屬性值增大時,則增加的實參值為 undefined;如果 length 屬性值減小,則會丟棄 length 長度值之后的實參值。

function f() {
    arguments.length = 2; //修改arguments屬性對象的length屬性值
    for (let i = 0; i < arguments.length; i++) {
        console.log(arguments[i]);
    }
}

f(3, 3, 6); //返回提示3、3

檢測參數合法性

在下面示例中,使用 arguments.callee 獲取匿名函數,然后通過函數的 length 屬性獲取函數形參個數,最后比較實參個數與形參個數,以檢測用戶傳遞的參數是否符合要求。

function f(x,y,z) {
    let a = arguments.length;  //獲取函數實參的個數
    let b = arguments.callee.length;  //獲取函數形參的個數
    if (a != b){  //如果實參和形參個數不相等,則提示錯誤信息
        throw new Error("傳遞的參數不匹配");
    }else {  //如果實參和形參個數相同,則返回它們的和
        return x + y + z;
    }
}

console.log(f(3,4,5));  //返回值12

arguments.callee 等價于函數名,在上面示例中,arguments.callee 等于 f。

函數的參數個數不確定時,用于訪問調用函數的實參值

如果函數的參數個數不確定,或者函數的參數個數很多,而又不想逐一定義每一個形參,則可以省略定義參數,直接在函數體內使用 Arguments 對象來訪問調用函數的實參值。

下面示例定義一個求平均值的函數,該函數借助 arguments 對象來計算參數的平均值。在調用函數時,可以傳入任意多個參數。

function avg() {
    //求平均值
    let num = 0;
    let length = 0; //聲明并初始化臨時變量
    for (let i = 0; i < arguments.length; i++) {
        //遍歷所有實參
        if (typeof arguments[i] != "number") {
            //如果參數不是數值
            continue; //則忽略該參數值
        }
        num += arguments[i]; //計算參數的數值之和
        length++; //計算參與和運算的參數個數
    }

    return num / length; //返回平均值
}

console.log(avg(1, 2, 3, 4)); //返回2.5
console.log(avg(1, 2, "3", 4)); //返回2.3333333333333335

遍歷或訪問實參的值

arguments 對象是偽類數組,不是數組,可以通過 length 屬性和中括號語法來遍歷或訪問實參的值。不過,通過動態調用的方法,也可以使用數組的方法,如 push、pop、slice 等。

下面示例使用動態調用的方法,讓 arguments 對象調用數組方法 slice(),可以把函數的參數對象轉換為數組。

function f() {
    return [].slice.apply(arguments);
    // 也可以使用如下寫法
    // return Array.from(arguments);
    // return [...arguments];
}
console.log(f(1, 2, 3, 4, 5, 6)); //返回[1,2,3,4,5,6]

看完了這篇文章,相信你對“JavaScript中Arguments對象有哪些用途”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永兴县| 梁河县| 双牌县| 琼中| 克山县| 彰武县| 旺苍县| 新津县| 彭州市| 乌拉特中旗| 淮滨县| 敖汉旗| 闽侯县| 探索| 股票| 铜山县| 商城县| 科技| 安平县| 柳江县| 安多县| 民丰县| 龙游县| 平潭县| 夏津县| 寿光市| 凉城县| 金湖县| 运城市| 临江市| 五寨县| 晋中市| 库车县| 武胜县| 句容市| 洛浦县| 四川省| 阿拉善右旗| 普兰店市| 酒泉市| 樟树市|