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

首頁 > 編程 > JavaScript > 正文

JavaScript剩余操作符Rest Operator詳解

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

剩余操作符

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

剩余參數(shù)

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

獲取參數(shù)

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

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

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

和arguments的差別

上面剩余參數(shù)args是一個數(shù)組,而函數(shù)的arguments是一個偽數(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); // 傳進來的參數(shù)的個數(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ù)組和對象中提取值,對變量進行賦值,這被稱為解構(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)賦值時,可以使用剩余操作符。剩余操作符所操作的變量會匹配在解構(gòu)賦值中所有其他變量未匹配到的屬性。
比如如下代碼,others會匹配到first和second對于屬性的余下的屬性:

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

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

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

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

剩余操作符和展開操作符

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 余江县| 金堂县| 万盛区| 措美县| 襄垣县| 聊城市| 宁国市| 广元市| 和硕县| 高平市| 聂荣县| 镇原县| 志丹县| 汉中市| 上杭县| 临朐县| 怀来县| 绥滨县| 油尖旺区| 红桥区| 舞阳县| 梅州市| 苏尼特右旗| 攀枝花市| 普兰店市| 阳西县| 驻马店市| 绥德县| 桑植县| 门源| 海淀区| 石家庄市| 游戏| 泰宁县| 辉南县| 平武县| 苗栗县| 定远县| 高阳县| 友谊县| 香港 |