From 77d166065ecdbee6c5a29339c30582e527c1fa00 Mon Sep 17 00:00:00 2001 From: Abhas Bhattacharya Date: Thu, 16 Jul 2020 10:36:17 +0530 Subject: [PATCH] update post: How does in-built Array iterator work? --- ckciw2lr900d0xas144h5fpwm.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/ckciw2lr900d0xas144h5fpwm.md b/ckciw2lr900d0xas144h5fpwm.md index 35fb1c6..4ecf475 100644 --- a/ckciw2lr900d0xas144h5fpwm.md +++ b/ckciw2lr900d0xas144h5fpwm.md @@ -13,12 +13,10 @@ When we use spread operator, like `[...someArray]` - it treats someArray as a ge 2. Then it consumes all the values from the iterable by calling `iter.next()` repeatedly. This method `.next()` returns response in this structure `{value: "something", done: true|false}`. -3. While values are available, it returns `done: false`; after all values are finished, it returns `done: true`. After this, the consumer (i.e. spread operator) should stop asking for more values. +3. While values are available, it returns `done:false`; after all values are finished, it returns `done:true`. After this, the consumer (i.e. spread operator) should stop asking for more values. This is how the iterable/iterator stuff works. -In our case, Iterable is `someArray` - which has a special property `Symbol.iterator` whose value is a method. Calling this method returns a iterable (`iter`), which has `.next()` method. Calling this method returns all the values one-by-one. - ## Array Iterator Array has in-built support for iterable/iterator protocol, through prototype. Array.prototype has a method with key `Symbol.iterator`, which creates a ArrayIterator.