国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

javascript 利用arguments實現可變長參數

2019-11-19 18:54:41
字體:
來源:轉載
供稿:網友

javascript arguments解釋,實現可變長參數。

在C#中,有可變長參數params[],但是在js中,如何實現這種可變參數呢?

一、可變長參數

arguments是非常好的解決方法,一直不知道javascript有這個東西。

先來看看應用場景,使用arguments傳入任意個數的參數到js函數里的寫法。

function Test() {  console.log(arguments[0]);  console.log(arguments[1]);  console.log(arguments[2]);};Test(1, 2, 3);

輸出 1 2 3;

當然,你也可以在javascript函數里放一個數組,但是它是固定長度的。

二、不要直接修改arguments對象

arguments對象類似于數組,但實際上它也并不是數組,使用call方法,可能將數組的shift函數用到它身上,但是盡量不要嘗試去改動arguments。很容易造成混亂。

如果確實要修改,可以將arguments的內容復制到一個新數組上,然后在新數組上進行修改。

var args = [].slice.call(arguments);

用變量綁定arguments,實現跨函數訪問

arguments變量是被隱式綁定到每個函數體內的,注意是每一個函數內部。

一個迭代器的例子能夠說明這個問題;

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("已經是最后一個元素!");   }   return arguments[i++];  //next 有自己的arguments  } }} var it = values(1, 2, 3, 4, 5, 6, 7);console.log(it.next());  //undefinedconsole.log(it.next());  //undefinedconsole.log(it.next());  //undefined

如果要訪問外層函數的arguments,那么只能通過局部變量綁定的方式,在內層就能夠訪問,上面的例子可以改造成

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("已經是最后一個元素!");   }   return ourterArgs[i++];  //ourterArgs 外層保存的 arguments  } }} var it = values(1, 2, 3, 4, 5, 6, 7);console.log(it.next());  //1console.log(it.next());  //2console.log(it.next());  //3

以上所述是本文的全部內容,希望對大家有所幫助,謝謝對武林網的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 盐池县| 洮南市| 荃湾区| 龙南县| 临夏县| 息烽县| 五家渠市| 新乡县| 大城县| 宿松县| 左贡县| 娱乐| 辽阳县| 绥芬河市| 宣武区| 东辽县| 潮安县| 南澳县| 嘉善县| 壶关县| 寻乌县| 疏勒县| 益阳市| 沽源县| 祁东县| 海城市| 金塔县| 大石桥市| 靖远县| 仙居县| 永顺县| 色达县| 晴隆县| 襄樊市| 平度市| 宁安市| 耿马| 大关县| 霍邱县| 射洪县| 新河县|