// var someString = "hi";
// var iterator = someString[Symbol.iterator]();
//
// var result = iterator.next();
// while (!result.done) {
// console.log(result.value);
// result = iterator.next();
// }
let something = 'hi';
let iterator = something[Symbol.iterator]();
let result = iterator.next();
while(!result.done){
console.log(result.value);
result = iterator.next();
}
이터레이터 펑션 만들기
function makeIterator(array){
var nextIndex = 0;
return {
next(){
return nextIndex < array.length ?
{value: array[nextIndex++], done: false} :
{done: true};
}
};
}
var it = makeIterator(['yo', 'ya']);
console.log(it.next().value); // 'yo'
console.log(it.next().value); // 'ya'
console.log(it.next().done); // true
ㅈ제네레이터도 만듬
function* makeSimpleGenerator(array){
var nextIndex = 0;
while(nextIndex < array.length){
yield array[nextIndex++];
}
}
var gen = makeSimpleGenerator(['yo', 'ya']);
console.log(gen.next().value); // 'yo'
console.log(gen.next().value); // 'ya'
console.log(gen.next().done); // true
function* idMaker(){
var index = 0;
while(true)
yield index++;
}
var gen = idMaker();
console.log(gen.next().value); // '0'
console.log(gen.next().value); // '1'
console.log(gen.next().value); // '2'
// ...
iterable과 iterator는 자바스크립트에서 순회 가능한 객체를 다룰 때 사용되는 개념입니다. 이 두 용어는 서로 연관되어 있지만 약간의 차이가 있습니다.
간단히 말하면, 이터러블은 순회 가능한 객체이고 이터레이터는 순회를 수행하는 객체입니다. 이터러블은 Symbol.iterator 메서드를 통해 이터레이터를 생성하고, 이터레이터는 next() 메서드를 호출하여 순회를 진행하며 값을 반환합니다.
예를 들어, 배열은 이터러블이며 Symbol.iterator 메서드를 통해 이터레이터를 얻을 수 있습니다. 이터레이터는 배열의 값을 순차적으로 반환하며, next()를 호출할 때마다 다음 값을 반환합니다.
댓글 영역