javascript 利用arguments實現(xiàn)可變長參數(shù)
javascript arguments解釋,實現(xiàn)可變長參數(shù)。
在C#中,有可變長參數(shù)params[],但是在js中,如何實現(xiàn)這種可變參數(shù)呢?
一、可變長參數(shù)
arguments是非常好的解決方法,一直不知道javascript有這個東西。
先來看看應(yīng)用場景,使用arguments傳入任意個數(shù)的參數(shù)到j(luò)s函數(shù)里的寫法。
function Test() {
console.log(arguments[0]);
console.log(arguments[1]);
console.log(arguments[2]);
};
Test(1, 2, 3);
輸出 1 2 3;
當(dāng)然,你也可以在javascript函數(shù)里放一個數(shù)組,但是它是固定長度的。
二、不要直接修改arguments對象
arguments對象類似于數(shù)組,但實際上它也并不是數(shù)組,使用call方法,可能將數(shù)組的shift函數(shù)用到它身上,但是盡量不要嘗試去改動arguments。很容易造成混亂。
如果確實要修改,可以將arguments的內(nèi)容復(fù)制到一個新數(shù)組上,然后在新數(shù)組上進(jìn)行修改。
var args = [].slice.call(arguments);
用變量綁定arguments,實現(xiàn)跨函數(shù)訪問
arguments變量是被隱式綁定到每個函數(shù)體內(nèi)的,注意是每一個函數(shù)內(nèi)部。
一個迭代器的例子能夠說明這個問題;
function values() {
//values有自己的arguments
var i = 0, n = arguments.length;
return {
hasNext: function () {
return i < n; //hasNext 有自己的arguments
},
next: function () {
if(i >= n)
{
throw new Error("已經(jīng)是最后一個元素!");
}
return arguments[i++]; //next 有自己的arguments
}
}
}
var it = values(1, 2, 3, 4, 5, 6, 7);
console.log(it.next()); //undefined
console.log(it.next()); //undefined
console.log(it.next()); //undefined
如果要訪問外層函數(shù)的arguments,那么只能通過局部變量綁定的方式,在內(nèi)層就能夠訪問,上面的例子可以改造成
function values() {
//values有自己的arguments
var i = 0, n = arguments.length, ourterArgs = arguments;
return {
hasNext: function () {
return i < n; //hasNext 有自己的arguments
},
next: function () {
if(i >= n)
{
throw new Error("已經(jīng)是最后一個元素!");
}
return ourterArgs[i++]; //ourterArgs 外層保存的 arguments
}
}
}
var it = values(1, 2, 3, 4, 5, 6, 7);
console.log(it.next()); //1
console.log(it.next()); //2
console.log(it.next()); //3
以上所述是本文的全部內(nèi)容,希望對大家有所幫助,謝謝對腳本之家的支持!
- js的隱含參數(shù)(arguments,callee,caller)使用方法
- javascript內(nèi)置對象arguments詳解
- javascript arguments 傳遞給函數(shù)的隱含參數(shù)
- JS函數(shù)動態(tài)傳遞參數(shù)的方法分析【基于arguments對象】
- javascript arguments使用示例
- Javascript中arguments對象的詳解與使用方法
- JavaScript中使用arguments獲得函數(shù)傳參個數(shù)實例
- JS中call/apply、arguments、undefined/null方法詳解
- 深入理解JS函數(shù)的參數(shù)(arguments)的使用
- JavaScript中arguments的使用方法詳解
相關(guān)文章
JS實現(xiàn)鼠標(biāo)拖拽盒子移動及右鍵點擊盒子消失效果示例
這篇文章主要介紹了JS實現(xiàn)鼠標(biāo)拖拽盒子移動及右鍵點擊盒子消失效果,涉及javascript事件響應(yīng)及頁面元素屬性動態(tài)操作相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2019-01-01
JS實現(xiàn)自定義簡單網(wǎng)頁軟鍵盤效果代碼
這篇文章主要介紹了JS實現(xiàn)自定義簡單網(wǎng)頁軟鍵盤效果代碼,可實現(xiàn)簡單模擬鍵盤布局及響應(yīng)鼠標(biāo)點擊按下鍵盤按鍵功能,簡單實用,具有一定參考借鑒價值,需要的朋友可以參考下2015-11-11
JS中for,for...in,for...of和forEach的區(qū)別和用法實例
JS遍歷數(shù)組(循環(huán)數(shù)組)的方式有多種,可以使用傳統(tǒng)的for循環(huán),也可以使用升級版的for in循環(huán),還可以使用Array類型的forEach() 方法,這篇文章主要給大家介紹了關(guān)于JS中for、for...in、for...of和forEach的區(qū)別和用法的相關(guān)資料,需要的朋友可以參考下2021-11-11
js將類數(shù)組對象轉(zhuǎn)換成數(shù)組對象
javascript與dom有許多瑕疵,如著名的類數(shù)組對象Arguments,其他諸如HTMLCollection,NodeList如果它們都是數(shù)組的子類,那多省時啊。2010-05-05
淺談在fetch方法中添加header后遇到的預(yù)檢請求問題
下面小編就為大家?guī)硪黄獪\談在fetch方法中添加header后遇到的預(yù)檢請求問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-08-08

