欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript剩余操作符Rest Operator詳解

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

剩余操作符

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

剩余參數(shù)

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

獲取參數(shù)

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

function sum(a,b,...args){
 console.log(args.length); // 傳進(jìn)來的參數(shù)的個數(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ù)的個數(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); // 傳進(jìn)來的參數(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ù)組和對象中提取值,對變量進(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)賦值時,可以使用剩余操作符。剩余操作符所操作的變量會匹配在解構(gòu)賦值中所有其他變量未匹配到的屬性。
比如如下代碼,others會匹配到first和second對于屬性的余下的屬性:

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 }

對象中余下的屬性值被打包起來構(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ù)組編程多個元素,剩余操作符會把多個元素壓縮成一個單一的元素。

相關(guān)文章

  • JavaScript實(shí)現(xiàn)打字游戲

    JavaScript實(shí)現(xiàn)打字游戲

    這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)打字游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-02-02
  • js實(shí)現(xiàn)1,2,3,5數(shù)字按照概率生成

    js實(shí)現(xiàn)1,2,3,5數(shù)字按照概率生成

    這篇文章主要介紹了js實(shí)現(xiàn)1,2,3,5數(shù)字按照概率生成,需要的朋友可以參考下
    2017-09-09
  • JavaScript 圖片放大鏡(可拖放、縮放效果)

    JavaScript 圖片放大鏡(可拖放、縮放效果)

    背景:很久之前就在marry5.com看到這個效果,當(dāng)時覺得很神奇,礙于水平有限,沒做出來。
    2008-09-09
  • 使用微信小程序API,調(diào)用微信的各種內(nèi)置能力。

    使用微信小程序API,調(diào)用微信的各種內(nèi)置能力。

    微信小程序如何使用小程序API,去調(diào)用微信提供的各種內(nèi)置能力(即微信API)。小程序開發(fā)框架提供豐富的微信原生API,可以方便的調(diào)起微信提供的能力,如獲取用戶信息,本地存儲,支付功能等。
    2022-12-12
  • 前端常用的js函數(shù)方法

    前端常用的js函數(shù)方法

    這篇文章主要給大家分享的是常用的js函數(shù)的方法,告別搜索引擎的幫助,提高你的開發(fā)效率,,需要的朋友可以參考一下,希望對你的學(xué)習(xí)有所幫助
    2021-12-12
  • js日期、星座的級聯(lián)顯示代碼

    js日期、星座的級聯(lián)顯示代碼

    本篇文章主要是對js日期、星座的級聯(lián)顯示代碼進(jìn)行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-01-01
  • echarts折線圖月份數(shù)據(jù)不足自動補(bǔ)0和日期達(dá)到數(shù)據(jù)連續(xù)的效果(最新推薦)

    echarts折線圖月份數(shù)據(jù)不足自動補(bǔ)0和日期達(dá)到數(shù)據(jù)連續(xù)的效果(最新推薦)

    這篇文章主要介紹了echarts折線圖月份數(shù)據(jù)不足自動補(bǔ)0和日期達(dá)到數(shù)據(jù)連續(xù)的效果,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-03-03
  • 最新評論