>[danger]Js中yield和return的区别 在 JavaScript 中,`yield` 和 `return` 是两个用于控制函数执行流程的关键字,它们在功能和用法上有一些区别。 `yield` 关键字用于创建一个可迭代的生成器函数(Generator Function),它可以在函数内部暂停函数的执行,并返回一个中间结果。通过调用生成器的 `next()` 方法,可以将函数继续执行到下一个 `yield` 关键字处,并传递一个值作为上一个 `yield` 表达式的结果。 以下是一个示例,演示了生成器函数的使用: ```javascript function* generatorFunction() { yield 'Hello'; yield 'World'; yield '!'; } const generator = generatorFunction(); console.log(generator.next()); // { value: 'Hello', done: false } console.log(generator.next()); // { value: 'World', done: false } console.log(generator.next()); // { value: '!', done: false } console.log(generator.next()); // { value: undefined, done: true } ``` 在上述代码中,我们定义了一个生成器函数 `generatorFunction`,它包含了三个 `yield` 表达式。通过调用生成器函数,我们得到一个生成器对象 `generator`。每次调用 `generator.next()` 方法,生成器函数都会从上次 `yield` 表达式暂停的地方继续执行,并返回一个对象,其中 `value` 属性表示 `yield` 表达式的结果,而 `done` 属性表示生成器函数是否已经执行完毕。 相比之下,`return` 关键字用于结束函数的执行,并返回一个指定的值。当函数执行到 `return` 语句时,函数会立即停止,并将指定的值作为函数的结果返回。 以下是一个示例,演示了 `return` 关键字的使用: ```javascript function getResult() { console.log('执行语句1'); return 'Hello, World!'; console.log('执行语句2'); // 这里的代码不会执行 } const result = getResult(); console.log(result); // Hello, World! ``` 在上述代码中,`getResult` 函数在执行到 `return` 语句时立即停止,并将 `'Hello, World!'` 返回给调用者。因此,`console.log('执行语句2')` 这行代码不会被执行。 总结一下,`yield` 关键字主要用于生成器函数中,在函数内部暂停执行并返回中间结果;而 `return` 关键字用于结束常规函数的执行,并返回一个最终结果。