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

首頁 > 編程 > JavaScript > 正文

ECMAScript6函數剩余參數(Rest Parameters)

2019-11-20 12:16:52
字體:
來源:轉載
供稿:網友

我們知道JS函數內部有個arguments對象,可以拿到全部實參。現在ES6給我們帶來了一個新的對象,可以拿到除開始參數外的參數,即剩余參數(廢話好多 O(∩_∩)O~)。

這個新的對象和arguments不一樣,它是程序員自定義的一個普通標識符,只是需要在前面加上三個點:...

function func(a, ...rest) { console.log(a) console.log(rest)}func(1)func(1, 2, 3, 4)

注意func的第二個參數rest,前面有三個點。定義好后調用了兩次,結果分別如下

可以看到第一次調用時,rest為一個空數組,第二次為[2, 3, 4]。

又比如,在前面定義2個參數

function func(a, b, ...rest) { console.log(a, b) console.log(rest)}func(1, 2)func(1, 2, 3, 4)

輸出結果如下

通過以上兩個示例應該已經了解剩余參數的意義了吧。

剩余參數嘛,所以后面就不要再跟其它的參數了,不然會報錯

function func(a, ...rest, b) { }

這里在rest后面加了一個參數b,Firefox會報錯

當您使用剩余參數后,函數的length屬性會發生一些變化

function func(a, b, ...rest) {}func.length // 2

即length不包含rest,為2。

有同學會想,剩余參數前面是否可以一個參數都沒有呢? 答案是肯定的

function func(...rest) { console.log(rest)}func(1) // [1]func(1, 2, 3, 4) // [1,2,3,4]

這里的rest實際和arguments功能差不多,有同學想這不就替代了arguments嗎? ECMAScript就是這個打算,在被廢棄的ES4里就已經有Rest Parameters(熟悉AS3的同學應該了解),ES4被廢棄后,Rest Parameters被保留到了ES6。

請注意,rest不能和arguments一起使用,會報錯

function func(...rest) { console.log(rest) console.log(arguments)}

Firefox控制臺如下

arguments和剩余參數的區別

arguments是一個偽數組(Array-like)
剩余參數是一個真正數組(Array),具有Array.prototype上的所有方法
arguments上有callee,callee上有caller

function func(a, ...rest) {  console.log(rest instanceof Array)}func(1, 2) // true

最后我們以一個剩余參數實際應用作為結束

/* * 任意個數相加 * * **示例** * sum(1) * sum(1, 2) * sum(1, 2, 3) */function sum(first, ...rest) {  var result = first  var i = 0  var len = rest.length  while (i < len) {    result += rest[i]    i++  }  return result}

以上所述就是本文的全部內容了,希望大家能喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 汪清县| 汕尾市| 平谷区| 邵阳市| 新建县| 江西省| 合川市| 芮城县| 鞍山市| 霸州市| 塘沽区| 嘉鱼县| 平远县| 白银市| 如皋市| 桐乡市| 昌黎县| 南乐县| 沧源| 广灵县| 宣武区| 墨脱县| 西青区| 长白| 武威市| 南川市| 界首市| 兴和县| 金沙县| 大洼县| 梅州市| 大连市| 苏尼特左旗| 隆化县| 宜昌市| 陆丰市| 神木县| 惠水县| 罗江县| 神农架林区| 漯河市|