В приведенном ниже коде есть итератор:
const cart = ['Product 0','Product 1','Product 2','Product 3','Product 4','Product 5','Product 6','Product 7','Product 8','Product 9','Product 10']
function createIterator(cart) {
let i = 0;//(*)
return {
nextProduct: function() {
//i:0; (**)
let end = (i >= cart.length);
let value = !end ? cart[i++] : undefined;
return {
end: end,
value: value
};
}
};
}
const it = createIterator(cart);
Сначала я знаю копию текущего состояния переменных функции и параметры проанализированы. (Верно?) . .. А когда вы запускаете
const it = createIterator(cart);
Создается ли свойство ниже?
//i:0 (**);
Making it.next (); эквивалентно
{
i:0;//state or value of i from createIterator() definition;
next : function(cart){
let end = (this.i >= cart.length);
let value = !end ? cart[this.i++] : undefined;
return {
end: end,
value: value
};
}
Или же состояние значения i в строке (*) из первого кода. Что изменено? Пожалуйста, если этот момент неясен ... дайте мне знать, чтобы объяснить лучше.