MST

星途 面试题库

面试题:JavaScript中迭代器与生成器的基础应用

请简述JavaScript中迭代器(Iterator)和生成器(Generator)的概念,并编写一个简单的生成器函数,该函数能够生成斐波那契数列的前n项。
44.9万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

迭代器(Iterator)概念

迭代器是一种对象,它提供了一种按顺序访问一个集合(如数组、对象等)元素的方式。迭代器对象必须实现 next() 方法,每次调用 next() 方法会返回一个包含 valuedone 两个属性的对象。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);
}