栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

JavaScript中的“功能*”是什么?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaScript中的“功能*”是什么?

这是一个生成器功能。

生成器是可以退出并稍后重新输入的函数。它们的上下文(变量绑定)将在重新进入时保存。

调用生成器函数不会立即执行其主体。而是返回该函数的迭代器对象。

next()
调用迭代器的方法时,将执行生成器函数的主体,直到第一个
yield
表达式指定要从迭代器返回的值,或者使用
yield*
,将其委托给另一个生成器函数。


历史记录:

这是的建议语法

Ecmascript.next

Mozilla的Dave Herman谈到了Ecmascript.next。在30:15他谈到了发电机。

之前,他解释了Mozilla如何通过实验方式实施建议的语言更改以帮助指导委员会。Dave与Mozilla的CTO(我认为)和原始Javascript设计师BrendanEich紧密合作。

工作组(TC-39)普遍同意Ecmascript.next应该具有某种生成器迭代器建议,但这不是最终的。

如果不更改该语言的下一个版本,则不应依靠它来显示,即使它没有变化,也有一段时间不会在其他浏览器中广泛显示。

总览

一流的协程,表示为封装暂停的执行上下文(即函数激活)的对象。现有技术:Python,Icon,Lua,Scheme,Smalltalk。

例子

斐波纳契数的“无限”序列(尽管行为在2 53附近):

function* fibonacci() {    let [prev, curr] = [0, 1];    for (;;) {        [prev, curr] = [curr, prev + curr];        yield curr;    }}

生成器可以循环迭代:

for (n of fibonacci()) {    // truncate the sequence at 1000    if (n > 1000)        break;    print(n);}

生成器是迭代器:

let seq = fibonacci();print(seq.next()); // 1print(seq.next()); // 2print(seq.next()); // 3print(seq.next()); // 5print(seq.next()); // 8


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/575189.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号