最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript剩余操作符Rest Operator詳解

 更新時(shí)間:2019年07月20日 14:59:43   作者:ITman彪叔  
在本篇文章里小編給各位分享的是關(guān)于JavaScript剩余操作符Rest Operator知識(shí)點(diǎn)用法總結(jié),有需要的朋友們跟著學(xué)習(xí)下。

剩余操作符

之前這篇文章JavaScript展開操作符(Spread operator)介紹講解過展開操作符。剩余操作符和展開操作符的表示方式一樣,都是三個(gè)點(diǎn) '…',但是他們的使用場景會(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 // 1
second // 2
others // { 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è)單一的元素。

相關(guān)文章

  • ES6學(xué)習(xí)教程之對(duì)象字面量詳解

    ES6學(xué)習(xí)教程之對(duì)象字面量詳解

    相對(duì)于ES5,ES6的對(duì)象字面量得到了很大程度的增強(qiáng),下面這篇文章主要給大家介紹了關(guān)于ES6學(xué)習(xí)教程之對(duì)象字面量的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-10-10
  • 紅米手機(jī)搶購的js代碼

    紅米手機(jī)搶購的js代碼

    這篇文章主要介紹了紅米手機(jī)搶購時(shí)返回的js代碼,制作紅米搶購軟件時(shí)可以用到,,需要的朋友可以參考下
    2014-03-03
  • 基于canvasJS在PHP中制作動(dòng)態(tài)圖表

    基于canvasJS在PHP中制作動(dòng)態(tài)圖表

    這篇文章主要介紹了基于canvasJS在PHP中制作動(dòng)態(tài)圖表,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • javascript框架設(shè)計(jì)之類工廠

    javascript框架設(shè)計(jì)之類工廠

    這篇文章主要介紹了javascript框架設(shè)計(jì)之類工廠的相關(guān)資料,非常淺顯易懂,有需要的小伙伴可以查看下。
    2015-06-06
  • jQuery實(shí)現(xiàn)可收縮展開的級(jí)聯(lián)菜單實(shí)例代碼

    jQuery實(shí)現(xiàn)可收縮展開的級(jí)聯(lián)菜單實(shí)例代碼

    這篇文章主要是對(duì)利用jQuery實(shí)現(xiàn)可收縮展開的級(jí)聯(lián)菜單的實(shí)例代碼進(jìn)行了詳細(xì)的介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助
    2013-11-11
  • JS打開圖片另存為對(duì)話框?qū)崿F(xiàn)代碼

    JS打開圖片另存為對(duì)話框?qū)崿F(xiàn)代碼

    使用JS打開圖片另存為對(duì)話框一直都是網(wǎng)頁應(yīng)用中不可缺少的一部分,本人有些好奇,于是搜集整理了一些實(shí)現(xiàn)代碼,不知道符不符合大眾的口味,在此班門弄斧了,需要的朋友可以了解下
    2012-12-12
  • JavaScript 禁止用戶保存圖片的實(shí)現(xiàn)代碼

    JavaScript 禁止用戶保存圖片的實(shí)現(xiàn)代碼

    這篇文章主要介紹了JavaScript 禁止用戶保存圖片的實(shí)現(xiàn)代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • js時(shí)間比較 js計(jì)算時(shí)間差的簡單實(shí)現(xiàn)方法

    js時(shí)間比較 js計(jì)算時(shí)間差的簡單實(shí)現(xiàn)方法

    下面小編就為大家?guī)硪黄猨s時(shí)間比較 js計(jì)算時(shí)間差的簡單實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-08-08
  • 基于Bootstrap實(shí)現(xiàn)城市三級(jí)聯(lián)動(dòng)

    基于Bootstrap實(shí)現(xiàn)城市三級(jí)聯(lián)動(dòng)

    這篇文章主要為大家詳細(xì)介紹了基于BootStrap實(shí)現(xiàn)城市三級(jí)聯(lián)動(dòng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • 詳解ES6語法之可迭代協(xié)議和迭代器協(xié)議

    詳解ES6語法之可迭代協(xié)議和迭代器協(xié)議

    這篇文章主要介紹了詳解ES6語法之可迭代協(xié)議和迭代器協(xié)議,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-01-01

最新評(píng)論

南宁市| 错那县| 白河县| 抚松县| 古田县| 阳城县| 达日县| 都兰县| 镇宁| 凉城县| 宁都县| 曲水县| 天等县| 达孜县| 关岭| 招远市| 西城区| 玉环县| 望谟县| 平陆县| 茌平县| 鸡泽县| 嵊州市| 盘山县| 梅河口市| 德清县| 新泰市| 荣昌县| 怀来县| 涿州市| 陆河县| 周口市| 闵行区| 汾西县| 于田县| 涪陵区| 涟源市| 新和县| 松江区| 新安县| 雷波县|