기존과 달라진 ES6에서의 리스트 순회
const list = [1, 2, 3];
const str = 'abc'; // 유사배열
****
// case 기존의 리스트순회
for (var i = 0; i < list.length; i++) {
// log(list[i]); // 1 2 3
}
for (var i = 0; i < str.length; i++) {
// log(str[i]);
}
// ES6 이상의 순회
for (const a of list) {
// log(a);
}
for (const a of str) {
// log(a);
}
Array를 통해 알아보기
log('Arr -----------');
const arr = [1, 2, 3];
for (const a of arr) log(a);
Set을 통해 알아보기
log('Set -----------');
const set = new Set([1, 2, 3]);
for (const a of set) log(a);
Map을 통해 알아보기
log('Map -----------');
const map = new Map([['a', 1], ['b', 2], ['c', 3]]);
for (const a of map) log(a);
\\
- for of 문이 내부적으로는 위의 ES5와 같은 순회 형태로 구현되어 있지 않음을 알 수 있다
for of 의 구현 알아보기
log('Arr -----------');
const arr = [1, 2, 3];
arr[Symbol.iterator] = null; // arr is not iterable 에러
const iter1 = arr[Symbol.iterator]();
for (const a of iter1) log(a);
// set 과 map 역시 set[Symbol.iterator] map[Symbol.iterator] 에
// 어떤 메서드가 구현되어있다
- for of 를 하면 끝날때까지 Symbol.iterator에 있는 iterator 계속 next() 실행하고 왼쪽 변수에는 value를 넣는다