麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

JavaScript剩余操作符Rest Operator詳解

2019-11-19 11:09:39
字體:
供稿:網(wǎng)友

剩余操作符

之前這篇文章JavaScript展開操作符(Spread operator)介紹講解過展開操作符。剩余操作符和展開操作符的表示方式一樣,都是三個(gè)點(diǎn) '…',但是他們的使用場(chǎng)景會(huì)不同。

剩余參數(shù)

定義函數(shù)的時(shí)候,如果函數(shù)的參數(shù)以… 為前綴,則改參數(shù)是剩余參數(shù)(rest parameter)。剩余參數(shù)表示參數(shù)個(gè)數(shù)不確定的參數(shù)列表。在函數(shù)被調(diào)用時(shí),該形參會(huì)成為一個(gè)數(shù)組,數(shù)組中的元素都是傳遞給該函數(shù)的多出來的實(shí)參的值。

獲取參數(shù)

剩余操作符可以用來方便地獲取傳進(jìn)來的參數(shù)。

function sum(a,b,...args){ console.log(args.length); // 傳進(jìn)來的參數(shù)的個(gè)數(shù) 3 let s = a + b; if(args && args.length){  args.forEach(i => {s += i}); }  return s;}sum(1, 2, 3, 4, 5 ); // 傳進(jìn)來的參數(shù)的個(gè)數(shù) 3

其中第一個(gè)形參a對(duì)應(yīng)的是1,第二個(gè)形參b對(duì)應(yīng)的2,…args表示的就是[3, 4, 5]。

和arguments的差別

上面剩余參數(shù)args是一個(gè)數(shù)組,而函數(shù)的arguments是一個(gè)偽數(shù)組。應(yīng)此剩余參數(shù)可以使用數(shù)組的相關(guān)方法sort,map,forEach,pop,而arguments不能。

arguments想要變成數(shù)組,可以通過Array.prototype.slice.call方法,使用剩余操作符可以避免將arguments轉(zhuǎn)為數(shù)組的麻煩。

// 下面的代碼模擬了剩余數(shù)組function sum(a,b,){ var args = Array.prototype.slice.call(arguments, sum.length);  console.log(args.length); // 傳進(jìn)來的參數(shù)的個(gè)數(shù) 3 let s = a + b; args.forEach(i => {s += i}); return s;}sum(1, 2, 3, 4, 5 );

而使用剩余操作符,則不需要轉(zhuǎn)化,直接使用,更加方便。

剩余操作符與解構(gòu)賦值

我們知道,ES6 允許按照一定模式,從數(shù)組和對(duì)象中提取值,對(duì)變量進(jìn)行賦值,這被稱為解構(gòu)(Destructuring)。 比如如下代碼:

let array = [1,2,3]let [a,b,c] = array; // a 1, b 2, c 3

再比如如下代碼:

let obj = {a:1,b:2,c:3}let {a,b,c} = obj; // a 1, b 2, c 3

在解構(gòu)賦值時(shí),可以使用剩余操作符。剩余操作符所操作的變量會(huì)匹配在解構(gòu)賦值中所有其他變量未匹配到的屬性。
比如如下代碼,others會(huì)匹配到first和second對(duì)于屬性的余下的屬性:

const { first, second, ...others } = { first: 1, second: 2, third: 3, fourth: 4, fifth: 5}first // 1second // 2others // { third: 3, fourth: 4, fifth: 5 }

對(duì)象中余下的屬性值被打包起來構(gòu)造一個(gè)新的對(duì)象賦值給了others。

數(shù)組也可以通過剩余操作符,把剩余的元素打包成一個(gè)新的數(shù)組賦值給剩余屬性,代碼如下:

let array = [1,2,3,4,5];let [a,b,...c] = array; // a 1,b 2, c [3,4,5]

剩余操作符和展開操作符

某種程度上,可以任務(wù)剩余操作符是展開操作符的相反操作。展開操作符會(huì)”展開“數(shù)組編程多個(gè)元素,剩余操作符會(huì)把多個(gè)元素壓縮成一個(gè)單一的元素。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 日韩视频在线观看免费视频 | 一级黄片毛片免费看 | 久久精品国产久精国产 | 国产又粗又爽又深的免费视频 | 久久69精品久久久久久国产越南 | 精品久久久久久久久久久久久久久久久久久 | 97精品国产高清在线看入口 | 91av大片 | 99re热精品视频 | 国产精品久久久久av | 成人国产精品久久久 | 国产乱色精品成人免费视频 | 久久久久久麻豆 | 黄色av网站在线观看 | 蜜桃传媒视频麻豆第一区免费观看 | 国产毛片网站 | 福利在线播放 | 欧美一区在线观看视频 | av在线影片 | 美女视频在线观看黄 | 国产亚洲福利 | 欧美一级性 | 亚洲午夜免费 | 精品国产一区二区三区久久久狼牙 | 国产亚洲激情 | 国产成人在线观看免费 | 免费观看一级黄色片 | 久久精品国产亚洲7777小说 | 亚洲成人激情在线 | av在线直播观看 | 免费观看国产精品视频 | 精品成人久久久 | 国产美女视频一区二区三区 | 国产精品午夜未成人免费观看 | 嫩草www| 欧美日韩中文字幕在线视频 | 欧美日韩电影在线 | 久久国产精品免费视频 | 久久国产一 | 成人在线97 | 国产精品成人久久 |