Es6 function函数在javascript中的应用

93 阅读2分钟

在这篇博文中,我们将通过实例来学习生成器函数和产量关键词。首先,我们将看到普通函数是如何工作的?普通函数被调用,执行它,最后函数返回,或者返回函数体的值,执行完毕。这里有一个函数的例子,当函数方法被调用时,函数体中的语句序列被执行,最后返回值和迭代被停止控制。

function method(){
//body
return value;
}

method();

生成器函数简介

生成器是ES6-ES2015中引入的一种特殊的函数。这些函数控制着我们想要的迭代行为。当函数被调用时,它可以被暂停和恢复。例子 下面是一个生成器函数的例子

function* generateFunctions() {
    console.log('Generateor Function started');
    yield 'pause';
    console.log('Generateor Function Completed');
}
const gfunctions=generateFunctions();
console.log(gfunctions.next());
console.log(gfunctions.next());
console.log(gfunctions.next());

输出是

[object Generator]
"Generateor Function started"
Object { value: "pause", done: false }
"Generateor Function Completed"
Object { value: undefined, done: true }
Object { value: undefined, done: true }

我们将看到普通函数和生成器函数之间的区别

  • 这个函数以function开头,而普通函数以function开头。
  • 当下面的语句执行时,函数的执行用yield关键字暂停,函数不被调用,它得到生成器函数对象。
const gfunctions=generateFunctions();

最初,函数没有被调用并暂停,你必须调用gfunctions.next()来调用函数主体。next()方法返回一个包含值和完成键的对象。每次当你调用next()方法时,函数恢复执行并返回一个包含值和已完成键值的 对象 。它是代码执行的输出结果done:-执行的状态,false表示函数执行没有完成。

Typecript函数生成器

当你在typescript中生成函数时,它将不会默认工作,并给出以下错误 TS2339: Property 'next' does not exist on type 你必须对tsconfig.json文件进行配置修改,对上述错误的修复是

"target": "es6",
"lib": [
    "es6"
]

Typescript Yield 关键字Typescript支持生成器函数,其行为与预期一致。