Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save indongyoo/631697066fcd2147ec5cad7345e3dd2e to your computer and use it in GitHub Desktop.
Save indongyoo/631697066fcd2147ec5cad7345e3dd2e to your computer and use it in GitHub Desktop.
log(String.prototype[Symbol.iterator]);
// ƒ [Symbol.iterator]() { [native code] }
log(Array.prototype[Symbol.iterator]);
// ƒ values() { [native code] }
const iterable1 = [1, 2];
const iterator1 = iterable1[Symbol.iterator]();
log(iterator1.next()); // {value: 1, done: false}
log(iterator1.next()); // {value: 2, done: false}
log(iterator1.next()); // {value: undefined, done: true}
log(iterator1.next()); // {value: undefined, done: true}
for (const val of iterable1) console.log(val);
// 1
// 2
function reverseIterator(list) {
var cur = list.length;
return {
next: () => cur-- > 0 ?
{ value: list[cur], done: false } :
{ value: undefined, done: true }
}
}
const iterator2 = reverseIterator([1, 2]);
log(iterator2.next()); // {value: 2, done: false}
log(iterator2.next()); // {value: 1, done: false}
log(iterator2.next()); // {value: undefined, done: true}
for (const val of reverseIterator([1, 2])) log(val);
// Uncaught TypeError: reverseIterator(...) is not a function or its return value is not iterable
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment