ES6的展開運算子和剩餘運算子

2021-10-01 17:43:54 字數 1775 閱讀 7264

在es6中, 三個點(...) 有2個含義。分別表示 展開運算子 和 剩餘運算子。

/******************展開運算子(spread)********************/

// 1、傳遞資料代替多個字串的形式

function func (a, b, c)

var arr = [1, 2, 3];

test(...arr);

// 2、合併陣列

var arr1 = [1, 2, 3, 4];

var arr2 = [...arr1, 4, 5, 6];

// var arr2 = [4, 5, 6];

// arr1.push(...arr2);

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

// 3、合併物件

var info =

var obj = ;

console.log(obj);

// 4、字串轉資料

var str='loycoder';

var arr3= [...str];

console.log(arr3);

展開運算子:

前面對展開運算子功能做了簡單的演示,下面做一下總結介紹。

(1).在函式呼叫時,在引數中,將具有iterator介面的物件展開。

(2).在陣列建立時,將具有iterator介面的物件展開。

(3).建立物件直接量時,將物件直接量按照鍵值對方式展開(es2018新增)。

關於iterator介面可以參閱es2015 iterator遍歷器一章節。

/******************剩餘運算子(rest)********************/

// 當函式引數個數不確定時,用 rest運算子

function func1 (...arr)

}func1(1, 3, 5);

// 當函式引數個數不確定時的第二種情況

function func2 (item, ...arr)

func2(1, 2, 34);

// 配合解構賦值使用:

let [a,...temp]=[1, 2, 4];

let =;

console.log(a);

console.log(temp);

console.log(web);

console.log(rest);

剩餘運算子:

前面對剩餘運算子功能做了簡單的演示,下面做一下總結介紹。

(1)用於將剩餘多個值壓縮收集起來生成乙個陣列作為引數。

(2)剩餘運算子構成的剩餘引數只能位於引數列表的最後一位。

(3)將剩餘物件屬性值收集生成新物件(es2018新增)。

展開運算子用三個點號表示,功能是把陣列或類陣列物件展開成一系列用逗號隔開的值,即打散操作;

剩餘運算子也是三個點號,不過其功能與擴充套件運算子恰好相反,把逗號隔開的值序列組合成乙個陣列,是展開運算子的反向操作,即打包操作;

最後,補充一下:

es6之所以把這兩個關鍵字設成一致的寫法,是因為它們本質是一樣,都是解構賦值。

當三個點(...)在等號左邊,或者放在形參上。為 rest 運算子

當三個在等號右邊,或者放在實參上,是 spread運算子

或者說:

放在被賦值一方是rest 運算子。放在賦值一方式 spread運算子。

ES6的展開運算子和剩餘運算子

在es6中,三個點 有2個含義。分別表示 展開運算子 和 剩餘運算子。展開運算子 spread 1 傳遞資料代替多個字串的形式 function func a,b,c var arr 1,2,3 test arr 2 合併陣列 var arr1 1,2,3,4 var arr2 arr1,4,5,6...

ES6 剩餘引數 展開運算子

在原來的語法當中如果你要傳入引數並且全部獲取執行的話,很多情況下我們一般用arguments,但用arguments時會出現很多問題 因此在es6 現了剩餘引數 剩餘引數專門用於收集末尾所有引數,將其放置到乙個形引數組中。function sum args return sum console.lo...

es6 展開運算子

展開運算子不能用在物件當中,只能在可遍歷物件中使用 iterables iterables的實現是依靠 symbol.iterator 函式,目前只有array,set,string內建 symbol.iterator 方法,不過es7草案中已經加入了物件展開運算子。可用展開運算子展開陣列,解構陣列...