1. 程式人生 > >es6 展開運算子 ...

es6 展開運算子 ...

好記性不如爛筆頭,在學習的過程中,越來越明白這句話的含義;

ES6的展開運算子使用三個點來表示  ...

使用展開運算子的前提:物件具有 Iterator 遍歷器介面 ,比如陣列,

怎麼判斷一個物件是否具有Iterator 遍歷器介面呢,我們檢視物件是否有 Symbol(Symbol.iterator)

屬性就可以了有的話,那就具有Iterator 遍歷器介面,沒有的話,那就不具有;

我們看看陣列:

<script> let arr=["測試","介面","型別"]; console.log(arr);</script>

檢視控制檯:

  1. ƒ unshift()
  2. values
    :ƒ values()
  3. Symbol(Symbol.iterator):ƒ values()
  4. Symbol(Symbol.unscopables):{copyWithintrueentriestruefilltruefindtruefindIndextrue, …}
  5. __proto__:Object

可以看到是有這個屬性的,那麼就是說,陣列是具有這個介面的,

也就是說,我們可以對陣列使用展開運算子;

陣列,map ,set  在es6中都是具有這個介面的,但是object物件在es7中才增加了這個介面;

除了上面的,字串也是可以的,和陣列一樣;

下面我們可以利用展開運算子展開一個數組:

<script> let arr=["測試","介面","型別"]; console.log(...arr);</script>

上面輸出:測試 介面 型別

在陣列的名字前面加上 ...  即可展開陣列中的所有內容;

利用上面的展開,我們就可以在函式的引數中使用:

<script> let arr=["測試","介面","型別"]; function abc(a,b,c){ return a+b+c; } console.log(abc(...arr)); </script
>

還有很多的使用方法,慢慢積累了...