js-range/range.js
2025-12-13 10:37:34 -08:00

51 lines
1,001 B
JavaScript

export function *rangeGenerator(max) {
for (let i = 0; i < max; i++) {
yield i;
}
}
function rangeObjectPropertyNext() {
if (this.value < this.max) {
return {
value: this.value++
}
}
return {
done: true
}
}
function rangeObjectPropertyIterator() {
return {
value: 0,
max: this.max,
next: rangeObjectPropertyNext
};
}
export function rangeObjectProperty(max) {
return {
max,
[Symbol.iterator]: rangeObjectPropertyIterator
};
}
export function rangeClosure(max) {
let value = 0;
return {
[Symbol.iterator]() {
return {
next() {
if (value < max) {
return {
value: value++
};
}
return {
done: true
};
}
};
}
};
}