在此页面中,我找到了新的JavaScripthtml" target="_blank">函数类型:
// NOTE: "function*" is not supported yet in Firefox.
// Remove the asterisk in order for this code to work in Firefox 13
function* fibonacci() { // !!! this is the interesting line !!!
let [prev, curr] = [0, 1];
for (;;) {
[prev, curr] = [curr, prev + curr];
yield curr;
}
}
我已经知道了什么yield
,let
以及[?,?]=[?,?]
做的,但不知道什么function*
是注定的。它是什么?
这是一个生成器功能。
生成器是可以退出并稍后重新输入的函数。它们的上下文(变量绑定)将在重新进入时保存。
调用生成器函数不会立即执行其主体。而是返回该函数的迭代器对象。
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()); // 1 print(seq.next()); // 2 print(seq.next()); // 3 print(seq.next()); // 5 print(seq.next()); // 8
问题内容: 我在几个地方读到,主要的区别是“ 在箭头函数中按词法绑定”。一切都很好,但是我实际上不知道那意味着什么。 我知道这意味着它在定义函数主体的大括号范围内是唯一的,但是我实际上无法告诉您以下代码的输出,因为我不知道所指的是什么,除非它指的是胖箭头函数本身…。似乎没有用。 问题答案: 箭头函数捕获封闭上下文的值 因此,要直接回答您的问题,箭头函数内部的值将与分配箭头函数之前的值相同。
问题内容: 我们经常看到如下: 有什么功能? 问题答案: DOCTYPE的最主要用途是在Quirks模式和Standards模式渲染之间切换浏览器。 出现此功能的原因是IE的旧版本中的“残破”渲染。人们认识到,如果Microsoft仅“修复”了IE呈现引擎,则许多现有站点将无法正确呈现。因此,它的工作方式是,如果您在页面中完全放置了_任何_有效的DOCTYPE声明,则假定您知道自己在做什么,并且浏
问题内容: 我正在尝试通过阅读原始规范来围绕ES6中新的标准化块级功能进行研究。我的肤浅理解是: ES6中允许块级函数声明。 他们吊在街区的顶部。 在严格模式下,它们在包含块之外不可见。 但是,由于这些语义的一部分被指定为“可选”且仅对于Web浏览器是强制性的(附件B),这使情况进一步复杂化。所以我想填写下表: 我也不清楚在这种情况下“严格模式”是什么意思。这种区别似乎在附件B3.3中引入,作为在
问题内容: 我发现某些jQuery插件在其css规则中使用“ zoom”描述符,我什至查看w3c网站,也发现它用于放大,但是我实际上如何实现呢?还是我必须定义一些视口?以及如何定义这样的视口?还是我对整个事情都错了? 有可能像这样使用它吗 问题答案: CSS规范中未包含缩放功能,但IE,Safari4,Chrome支持缩放功能(从3.5开始,您可以在Firefox中获得类似的效果)。 因此,所有浏
本文向大家介绍JSP中 操作的功能是什么?,包括了JSP中 操作的功能是什么?的使用技巧和注意事项,需要的朋友参考一下 通过此操作,您可以将文件插入到正在生成的页面中。语法看起来像这样- 与include指令不同,include指令在将JSP页面转换为servlet时插入文件,而该动作则在请求页面时插入文件。 下表列出了与include操作相关联的属性- 序号 属性和说明 1 page 要包含的页
在Java8中,新的包是Java。util。函数包含很多函数接口。该软件包的文档(http://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html)多次提到“函数形状”: 有几种基本函数形状,包括函数(从T到R的一元函数)、消费者(从T到void的一元函数)、谓词(从T到布尔的一元函数)和供应者(从T到