好記性不如爛筆頭,在學習的過程中,越來越明白這句話的含義;
es6的展開運算子使用三個點來表示 ...
使用展開運算子的前提:物件具有 iterator 遍歷器介面 ,比如陣列,
怎麼判斷乙個物件是否具有iterator 遍歷器介面呢,我們檢視物件是否有symbol(symbol.iterator)
屬性就可以了
,有的話,那就具有
iterator
遍歷器介面,沒有的話,那就不具有;
我們看看陣列:
<
script>
letarr
=["測試",
"介面",
"型別"];
console
. log(arr);
script>
檢視控制台:
ƒ unshift()
values
:ƒ values()
symbol(symbol.iterator)
:ƒ values()
symbol(symbol.unscopables)
:__proto__
:object
可以看到是有這個屬性的,那麼就是說,陣列是具有這個介面的,
也就是說,我們可以對陣列使用展開運算子;
陣列,map ,set 在es6中都是具有這個介面的,但是object物件在es7中才增加了這個介面;
除了上面的,字串也是可以的,和陣列一樣;
下面我們可以利用展開運算子展開乙個陣列:
<
script>
letarr
=["測試",
"介面",
"型別"];
console
. log(
...arr);
script>
上面輸出:測試 介面 型別
在陣列的名字前面加上 ... 即可展開陣列中的所有內容;
利用上面的展開,我們就可以在函式的引數中使用:
<
script>
letarr
=["測試",
"介面",
"型別"];
function
abc(
a,b,
c)console
. log(
abc(
...arr));
script>
還有很多的使用方法,慢慢積累了...
es6 展開運算子
展開運算子不能用在物件當中,只能在可遍歷物件中使用 iterables iterables的實現是依靠 symbol.iterator 函式,目前只有array,set,string內建 symbol.iterator 方法,不過es7草案中已經加入了物件展開運算子。可用展開運算子展開陣列,解構陣列...
es6展開運算子
展開運算子 在es6中用.來表示展開運算子,它可以將陣列方法或者物件進行展開。先來看乙個例子它是如何使用的。const arr1 1,2,3 const arr2 arr1,10,20,30 這樣,arr2 就變成了 1,2,3,10,20,30 arr1中的值完全轉殖到了arr2中 arr1改變a...
ES6 展開運算子
es5 的寫法 function f x,y,z var args 0,1,2 es6 的寫法 function f x,y,z var args 0,1,2 f args 其實就是把陣列的每個資料拆開然後放進去 let arr autumn wscats 析構陣列 let y autumn,y a...