面试题答案
一键面试迭代器(Iterator)概念
迭代器是一种对象,它提供了一种按顺序访问一个集合(如数组、对象等)元素的方式。迭代器对象必须实现 next()
方法,每次调用 next()
方法会返回一个包含 value
和 done
两个属性的对象。value
表示当前迭代的值,done
是一个布尔值,当所有值都迭代完毕时为 true
,否则为 false
。
生成器(Generator)概念
生成器是一种特殊的函数,它返回一个迭代器。生成器函数使用 function*
语法定义,函数内部可以使用 yield
关键字暂停函数执行并返回一个值,下次调用 next()
时从暂停处继续执行。
生成斐波那契数列前n项的生成器函数代码如下:
function* fibonacciGenerator(n) {
let a = 0, b = 1, counter = 0;
while (counter < n) {
yield a;
[a, b] = [b, a + b];
counter++;
}
}
你可以使用以下方式调用这个生成器函数:
// 生成斐波那契数列的前10项
const fibonacciSequence = fibonacciGenerator(10);
for (let value of fibonacciSequence) {
console.log(value);
}