在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草案中已經加入了物件展開運算子。可用展開運算子展開陣列,解構陣列...