javascript 利用arguments實(shí)現(xiàn)可變長參數(shù)
javascript arguments解釋,實(shí)現(xiàn)可變長參數(shù)。
在C#中,有可變長參數(shù)params[],但是在js中,如何實(shí)現(xiàn)這種可變參數(shù)呢?
一、可變長參數(shù)
arguments是非常好的解決方法,一直不知道javascript有這個(gè)東西。
先來看看應(yīng)用場(chǎng)景,使用arguments傳入任意個(gè)數(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ù)里放一個(gè)數(shù)組,但是它是固定長度的。
二、不要直接修改arguments對(duì)象
arguments對(duì)象類似于數(shù)組,但實(shí)際上它也并不是數(shù)組,使用call方法,可能將數(shù)組的shift函數(shù)用到它身上,但是盡量不要嘗試去改動(dòng)arguments。很容易造成混亂。
如果確實(shí)要修改,可以將arguments的內(nèi)容復(fù)制到一個(gè)新數(shù)組上,然后在新數(shù)組上進(jìn)行修改。
var args = [].slice.call(arguments);
用變量綁定arguments,實(shí)現(xiàn)跨函數(shù)訪問
arguments變量是被隱式綁定到每個(gè)函數(shù)體內(nèi)的,注意是每一個(gè)函數(shù)內(nèi)部。
一個(gè)迭代器的例子能夠說明這個(gè)問題;
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)是最后一個(gè)元素!");
}
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)是最后一個(gè)元素!");
}
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
以上所述是本文的全部?jī)?nèi)容,希望對(duì)大家有所幫助,謝謝對(duì)腳本之家的支持!
- js的隱含參數(shù)(arguments,callee,caller)使用方法
- javascript內(nèi)置對(duì)象arguments詳解
- javascript arguments 傳遞給函數(shù)的隱含參數(shù)
- JS函數(shù)動(dòng)態(tài)傳遞參數(shù)的方法分析【基于arguments對(duì)象】
- javascript arguments使用示例
- Javascript中arguments對(duì)象的詳解與使用方法
- JavaScript中使用arguments獲得函數(shù)傳參個(gè)數(shù)實(shí)例
- JS中call/apply、arguments、undefined/null方法詳解
- 深入理解JS函數(shù)的參數(shù)(arguments)的使用
- JavaScript中arguments的使用方法詳解
相關(guān)文章
JS實(shí)現(xiàn)鼠標(biāo)拖拽盒子移動(dòng)及右鍵點(diǎn)擊盒子消失效果示例
這篇文章主要介紹了JS實(shí)現(xiàn)鼠標(biāo)拖拽盒子移動(dòng)及右鍵點(diǎn)擊盒子消失效果,涉及javascript事件響應(yīng)及頁面元素屬性動(dòng)態(tài)操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-01-01
JavaScript手寫實(shí)現(xiàn)一個(gè)簡(jiǎn)單的快捷鍵庫
前端開發(fā)中,有時(shí)項(xiàng)目會(huì)遇到一些快捷鍵需求,比如綁定快捷鍵,展示快捷鍵,編輯快捷鍵等需求,所以本文就來用JavaScript手寫一個(gè)簡(jiǎn)單的快捷鍵庫吧2024-02-02
BootStrap Table對(duì)前臺(tái)頁面表格的支持實(shí)例講解
bootstrap-table是在bootstrap的基礎(chǔ)上面做了一些封裝,所以在使用bootstrap-table之前要導(dǎo)入的js和css,下面通過本文給大家詳細(xì)介紹需要引入的文件,對(duì)bootstrap table 表格感興趣的朋友一起看看吧2016-12-12
JS實(shí)現(xiàn)自定義簡(jiǎn)單網(wǎng)頁軟鍵盤效果代碼
這篇文章主要介紹了JS實(shí)現(xiàn)自定義簡(jiǎn)單網(wǎng)頁軟鍵盤效果代碼,可實(shí)現(xiàn)簡(jiǎn)單模擬鍵盤布局及響應(yīng)鼠標(biāo)點(diǎn)擊按下鍵盤按鍵功能,簡(jiǎn)單實(shí)用,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11
JS中for,for...in,for...of和forEach的區(qū)別和用法實(shí)例
JS遍歷數(shù)組(循環(huán)數(shù)組)的方式有多種,可以使用傳統(tǒng)的for循環(huán),也可以使用升級(jí)版的for in循環(huán),還可以使用Array類型的forEach() 方法,這篇文章主要給大家介紹了關(guān)于JS中for、for...in、for...of和forEach的區(qū)別和用法的相關(guān)資料,需要的朋友可以參考下2021-11-11
js將類數(shù)組對(duì)象轉(zhuǎn)換成數(shù)組對(duì)象
javascript與dom有許多瑕疵,如著名的類數(shù)組對(duì)象Arguments,其他諸如HTMLCollection,NodeList如果它們都是數(shù)組的子類,那多省時(shí)啊。2010-05-05
淺談在fetch方法中添加header后遇到的預(yù)檢請(qǐng)求問題
下面小編就為大家?guī)硪黄獪\談在fetch方法中添加header后遇到的預(yù)檢請(qǐng)求問題。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-08-08
JS實(shí)現(xiàn)簡(jiǎn)單省市二級(jí)聯(lián)動(dòng)
這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)簡(jiǎn)單的省市二級(jí)聯(lián)動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11

