2023年12月11日 星期一

關於 Symbol.iterator

 關於 Symbol.iterator

前言

  Symbol.iterator 是設計來提取容器的預設變數,容器大部分都有像 keys() 或 entries() 了,已經很好用了,遽然還有另外一種提取法,在此把學習的過程做個紀錄。


內容

  範例如下

const map1 = new Map();

map1.set('0', 'foo');
map1.set(1, 'bar');

const iterator1 = map1[Symbol.iterator]();

for (const item of iterator1) {
  console.log(item);
}

for (const item of map1.entries() ) {
  console.log(item);
}


 Symbol.iterator 的用法是透過 Symbol 的使用方法,也就是 [ symbol ] 的語法來存取,不過要注意這裡提取的後面要加 () ,看起來就像個 function ,提取後的變數可以搭配 for...of 來提取容器內容,這不是和 entries() 的做法一樣了嗎!所以範例最後也示範了  entries() ,結果是一樣的,但 entries() 看起來比較直覺,相較之下, Symbol.iterator 的用法沒有特別的優勢,所以還是用 entries() 比較好。


參考資料

[ developer.mozilla.org ] Symbol.iterator

[ developer.mozilla.org ] Map.prototype[@@iterator]()

沒有留言:

張貼留言