const isIterable = v => v !== null && typeof v[Symbol.iterator] === 'function';
isIterable([]); // -> true
isIterable(''); // -> true
isIterable(new Map()); // -> true
isIterable(new Set()); // -> true
isIterable({}); // -> false
const array = []];
const iterator = array[Symbol.iterator]();
console.log(iterator.next()); // { value: 1, done: false }
console.log(iterator.next()); // { value: 2, done: false }
console.log(iterator.next()); // { value: 3, done: false }
console.log(iterator.next()); // { value: undefined, done: true }
for (변수선언문 of 이터러블) { ... }
for (const item of [1, 2, 3]) {
console.log(item); // 1 2 3
}
const arrayLike = {
0: 1,
1: 2,
2: 3,
length: 3
}
const arr = Array.from(arrayLike);
console.log(arr); // [1, 2, 3]
const arr = [...fibonacci];
console.log(arr); // [1, 2, 3, 5, 8]
const [first, second, ...rest] = fibonacci;
console.log(first, second, rest); // 1 2 [3, 5, 8]