中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaScript剩余操作符Rest Operator詳解

發布時間:2020-09-20 07:32:14 來源:腳本之家 閱讀:194 作者:ITman彪叔 欄目:web開發

剩余操作符

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

剩余參數

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

獲取參數

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

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

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

和arguments的差別

上面剩余參數args是一個數組,而函數的arguments是一個偽數組。應此剩余參數可以使用數組的相關方法sort,map,forEach,pop,而arguments不能。

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

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

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

剩余操作符與解構賦值

我們知道,ES6 允許按照一定模式,從數組和對象中提取值,對變量進行賦值,這被稱為解構(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

在解構賦值時,可以使用剩余操作符。剩余操作符所操作的變量會匹配在解構賦值中所有其他變量未匹配到的屬性。
比如如下代碼,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 }

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

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

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

剩余操作符和展開操作符

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

攀枝花市| 轮台县| 寻乌县| 抚松县| 九台市| 合作市| 泸州市| 嵊州市| 嘉义市| 南康市| 六盘水市| 石家庄市| 安西县| 包头市| 沙湾县| 西乌珠穆沁旗| 雷波县| 监利县| 永顺县| 黑河市| 祁门县| 阿克陶县| 西乌| 泸西县| 夏津县| 中宁县| 宝鸡市| 巢湖市| 广州市| 偏关县| 弥勒县| 双江| 绍兴县| 永昌县| 榆中县| 宁南县| 安阳市| 敖汉旗| 五大连池市| 潮州市| 湟源县|