ES6之三個點(擴充套件運算子及rest運算子)

2021-09-24 18:02:55 字數 1767 閱讀 9519

es6**現了三個點的寫法,初次看到一臉懵逼,現在讓我們好好來搞清楚這三個點...

首先需要了解的是在es6中新增了擴充套件運算子和rest引數,而這兩個都是用...三個點來表示的(麻蛋就不能用不同的表示嗎!)

第二需要了解的是擴充套件運算子(spread)好比 rest 引數的逆運算,為啥這麼說呢?

擴充套件運算子是將乙個陣列轉為用逗號分隔的引數序列。

rest引數(形式為...變數名),用於獲取函式的任意數目的引數。

這樣說來還是有點抽象,下面看**吧

// 擴充套件運算子

// 將乙個陣列轉為用逗號分隔的引數序列。

// 示例1

console.log(1, ...[2, 3, 4], 5) // 1 2 3 4 5

// 示例2

function add(x, y)

const numbers = [4, 38];

add(...numbers) // 42

// 示例3

function add(...values)

return sum;

}add([2,3,5]) // 02,3,5

// rest引數

// 用於接收函式任意數目的引數

// ...values是乙個陣列,也叫rest引數,它接收了3個引數,將這3個引數放入陣列中使用

function add(...values)

return sum;

}add(2, 5, 3) // 10

從示例上來看,...到底是rest引數還是擴充套件運算子,要看...後面跟的是陣列還是乙個非陣列變數,如果是陣列,則...是擴充套件運算子,如果是非陣列變數,則是rest引數。  (這樣理解有問題)

上面的舉例只是粗淺的認識,下面看下多了rest引數和擴充套件運算子對實際開發有什麼好處呢?

// 1、數字排序

// rest引數語法

const sortnumber = (...values) => values.sort();

console.log(sortnumber(2,6,4,7,5,1)); // [1,2,4,5,6,7]

// 普通寫法

// 普通寫法需要先將arguments轉為陣列後才能使用sort排序

function sortnumbers()

console.log(sortnumber(2,6,4,7,5,1)); // [1,2,4,5,6,7]

// 2、複製陣列

// 擴充套件運算子

let arr = [1,2];

let arr2 = [...arr];

arr2[1] = 3;

console.log(arr); // [1,2]

console.log(arr2); // [1,3]

// 普通寫法

let arr = [1,2];

let arr2 = arr.concat();

arr2[1] = 3;

console.log(arr); // [1,2]

console.log(arr2); // [1,3]

// 3、求陣列中最大值

// 擴充套件運算子

console.log(math.max(...[1,5,3,5,7,6])) // 7

// 普通寫法

寫完了感覺這個知識點還是有點模糊,以後開發中多用吧,有了新的理解再來補充!

es6 擴充套件運算子 三個點( )

看了阮大大的文章,發現很多都有運算子 暫且叫運算子 三個點點。於是查了一下。其實看起來這樣用也很6 乾貨如下 表面意思 擴充套件運算子 spread 是三個點 它好比 rest 引數的逆運算,將乙個陣列轉為用逗號分隔的引數序列。該運算子主要用於函式呼叫。function push array,ite...

es6 擴充套件運算子 三個點( )

擴充套件運算子 spread 是三個點 它好比 rest 引數的逆運算,將乙個陣列轉為用逗號分隔的引數序列。console.log 1,2,3 1 2 3 console.log 1,2,3,4 5 1 2 3 4 5 document.queryselectorall div 該運算子主要用於函式...

ES6 拓展運算子 三個點

es6中引入擴充套件運算子 它用於把乙個陣列轉化為用逗號分隔的引數序列,它常用在不定引數個數時的函式呼叫,陣列合併等情形。因為typescript是es6的超集,所以typescript也支援擴充套件運算子。1 可變引數個數的函式呼叫function push array,items functio...