当产量不存在时它们是相同的,当然在运行阶段不一样。
function* add(x, y) {
return x + y;
}
var it = add(2, 3);
it.next();
和
function add(x, y){
return x + y;
}
add(2, 3);
作为一种习惯,是否安全并且可以使用它们而不是正常的功能? 尽管有表现。
答案 0 :(得分:1)
你的问题在任何意义上都过于宽泛 - 我对你有一些评论,但实际上我认为应该删除这个问题/答案。
SO上的每个问题都应包含Minimum, Complete, Verifiable Example (MCVE)。有关如何在此处提问的其他指导,请参阅Help Center: How to Ask
安全吗?
只要您的环境支持生成器功能(大多数旧版环境不支持),那么确定,它是安全的"。如果您想支持旧环境,那么您必须转换您的程序。
可以吗?
如果是你的程序,只有你必须维护它,做任何你想做的事。但是,如果您正在与其他人合作或发布供社区使用的内容,那么当普通函数调用时,其他程序员不会想要使用生成器API(f(x).next().value
)。 (f(x)
)就足够了
......尽管有表现
这是否意味着您知道发电机与普通功能相比具有可怕的性能?我没有基准,但我估计发电机比普通功能慢至少10倍,如果不是这样的话。
...所以在这种情况下,无需切换
在未来的JavaScript未来中,每个人都会回到原来的程序并更新所有函数来使用生成器。生成器有一组非常具体的用例,在普通函数完成工作的情况下使用它们会相当愚蠢。
这只是我的一个问题!
这并没有以某种方式提高问题的质量。 SO是关于建立一个知识库,其中问题和答案现在和对于将来访问该网站的人来说是有用的。主观或基于意见的主题在这里被认为是偏离主题的,因为来自许多用户的定性反应将很快变得混乱,并且很容易降级为争论 - 只要看看任何政治和讨论"今天在任何形式的媒体上
正如其他人所评论的那样,如果你有关于此的客观细节,你应该谈论/询问这些。 "安全吗?"并且"可以吗?"既不是目标也不是特定的