CODE_READY Telegram 1884
А вы знаете, как работает for...of в JavaScript под капотом?

Для начала нужно понять, что такое итерируемый объект и итератор.
Любой объект, у которого есть метод Symbol.iterator, — итерируемый:
const nums = [10, 20, 30];
console.log(nums[Symbol.iterator]); // ƒ values() { [native code] }


Но сам цикл for...of работает не с массивом напрямую, а с его итератором.
Получим итератор вручную:
const iterator = nums[Symbol.iterator]();
console.log(iterator.next()); // { value: 10, done: false }
console.log(iterator.next()); // { value: 20, done: false }


А теперь — как for...of работает под капотом.
Он просто вызывает next() до тех пор, пока done !== true:
let result = iterator.next();
while (!result.done) {
console.log(result.value);
result = iterator.next();
}


🔥 Можно использовать итераторы для ленивой обработки данных, например при чтении потоков, больших массивов или генерации бесконечных значений.

📣 Code Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍28🔥8🤝6👎1



tgoop.com/code_ready/1884
Create:
Last Update:

А вы знаете, как работает for...of в JavaScript под капотом?

Для начала нужно понять, что такое итерируемый объект и итератор.
Любой объект, у которого есть метод Symbol.iterator, — итерируемый:

const nums = [10, 20, 30];
console.log(nums[Symbol.iterator]); // ƒ values() { [native code] }


Но сам цикл for...of работает не с массивом напрямую, а с его итератором.
Получим итератор вручную:
const iterator = nums[Symbol.iterator]();
console.log(iterator.next()); // { value: 10, done: false }
console.log(iterator.next()); // { value: 20, done: false }


А теперь — как for...of работает под капотом.
Он просто вызывает next() до тех пор, пока done !== true:
let result = iterator.next();
while (!result.done) {
console.log(result.value);
result = iterator.next();
}


🔥 Можно использовать итераторы для ленивой обработки данных, например при чтении потоков, больших массивов или генерации бесконечных значений.

📣 Code Ready | #практика

BY Code Ready | Frontend


Share with your friend now:
tgoop.com/code_ready/1884

View MORE
Open in Telegram


Telegram News

Date: |

Image: Telegram. But a Telegram statement also said: "Any requests related to political censorship or limiting human rights such as the rights to free speech or assembly are not and will not be considered." A Hong Kong protester with a petrol bomb. File photo: Dylan Hollingsworth/HKFP. The SUCK Channel on Telegram, with a message saying some content has been removed by the police. Photo: Telegram screenshot. Members can post their voice notes of themselves screaming. Interestingly, the group doesn’t allow to post anything else which might lead to an instant ban. As of now, there are more than 330 members in the group.
from us


Telegram Code Ready | Frontend
FROM American