前端高階攻略之ES6中展開 收集運算子

2021-10-24 02:26:41 字數 1484 閱讀 9379

收集,顧名思義把雜湊東西收集到乙個地方,這個地方es6規定收集在陣列中

例如:下面函式fn將傳遞的引數收集在arg變數中,列印arg是乙個陣列,裡面包含著傳來的引數。就像吃豆子一樣把值收到自己的嘴裡。

functionfn(

...arg)fn(

1,2,

3)

上面的**讓我們想起來arguments,也是儲存著傳過來的引數。但是我們知道arguments物件是類陣列,當我們想使用陣列的方法時,時使用不了的,需要手動的轉化才可以,而此時的…收集後就是乙個陣列。可以使用一系列的陣列方法。

…運算子讓我們感覺有點省略的意思,把引數用…代替。當像下面那樣傳參時引數(3,4,5,6,7),實參(a,b,…arg).此時的arg就是5,6,7.也就是說…收集只收集你沒定義的形參,就像你省略不寫他們。因此…只能作為最後一位出現。

function

test

(a,b,

...arg)

test(3

,4,5

,6,7

);

展開,展開,首先展開的這個東西應該是乙個集合,如果是乙個值的話,那還展開幹嘛。所以es6規定,展開的這個值必須是可迭代物件(帶symbol(symbol.iterator)屬性的物件),怎麼看這個是不是可迭代物件,可以在他的原型上看有沒有symbol(symbol.iterator)屬性。事實上,所有集合物件–陣列,set,map,字串的原型上都預設攜帶這個屬性,因此都是可迭代物件。展開成什麼?展開成雜湊的值。

例如:直接將陣列的值輸出

var arr =[1

,2,3

];console.

log(

...arr)

;//1 2 3

可以利用這個特性將兩個陣列合併成乙個陣列
var arr1 =[1

,2,3

];var arr2 =[7

,8,9

];var newarr =

[...arr1,

...arr2]

;//1,2,3,7,8,9

…運算子可以獲取(展開)物件裡的屬性。但必須在物件裡展開,因為物件不是可迭代物件所以直接…arg會報錯。

var obj1 =

var obj2 =

console.

log(obj2)

;//

合併物件
var obj1 =

var obj2 =

, text:

'ccc'

}var newobj =

}console.

log(newobj)

;

前端高階攻略之ES6中的解構賦值

今天我們來 乙個新問題 之前在我們開發的過程中,難免會碰到這樣的情況 後端傳給我們一串資料,然後我們需要對這個資料進行處理。如果是這樣的乙個資料 let obj 然後我們需要用變數去儲存這些資料,那麼我們可能會這麼操作 let username obj.username,userid obj.use...

前端高階攻略之ES6中的引數預設值

我們都清楚在呼叫函式的過程中,定義的引數缺失,此引數變數的值則會是undefined。怎麼給缺失的引數賦值預設值,在es6之前,並沒有太簡潔的方法,如下段 所示 function myfunction x,y,z myfunction 6 7 這種寫法是不是比較麻煩?預設值的設定是不是不夠直觀?fu...

ES6 展開 收集運算子

展開 收集運算子,也就是說他可以幹兩件事情,展開和收集 一 收集,顧名思義把雜湊東西收集到乙個地方,這個地方es6規定收集在陣列中 例如 下面函式fn將傳遞的引數收集在arg變數中,列印arg是乙個陣列,裡面包含著傳來的引數。就像吃豆子一樣把值收到自己的嘴裡。function fn arg fn 1...