国产探花免费观看_亚洲丰满少妇自慰呻吟_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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 陕西省| 湾仔区| 青铜峡市| 中西区| 邯郸市| 灵宝市| 广德县| 论坛| 集安市| 新巴尔虎右旗| 吉木萨尔县| 安义县| 吉隆县| 盐池县| 咸阳市| 小金县| 南通市| 资源县| 长治县| 宁南县| 富顺县| 凌源市| 厦门市| 舞钢市| 和平县| 黄陵县| 沁源县| 平潭县| 奉化市| 永平县| 同江市| 蓬莱市| 天长市| 永仁县| 乌拉特前旗| 云龙县| 孝义市| 靖安县| 共和县| 徐汇区| 义马市|