已关闭。此问题需要details or clarity。目前不接受回答。
**要改进此问题吗?**通过editing this post添加详细信息并阐明问题。
6年前关闭。
Improve this question的
当yield不存在时,它们是相同的,当然在运行阶段不相同。
function* add(x, y) {
return x + y;
}
var it = add(2, 3);
it.next();
字符串
和
function add(x, y){
return x + y;
}
add(2, 3);
型
作为一种习惯,使用它们而不是正常功能安全吗?尽管性能。
1条答案
按热度按时间klr1opcd1#
它安全吗?
只要您的环境支持生成器函数(大多数遗留环境不支持),那么它肯定是“安全的”。如果您想支持遗留环境,那么您必须转移您的程序。
你没事吧?
如果是你的程序,而且只有你自己需要维护它,那就做你想做的吧。但是,如果你和其他人一起工作,或者发布一些东西供社区使用,那么其他程序员不可能在一个普通的函数调用(
f(x)
)就足够了的情况下,对所有事情都使用生成器API(f(x).next().value
......尽管性能
这是否意味着你知道生成器的性能比普通函数差?我没有基准测试,但我估计生成器至少比普通函数慢10倍,如果不是更慢的话。
...因此,在这种情况下,无需切换
在未来的JavaScript中,永远不会有任何一个时候,每个人都回到他们的旧程序中,更新所有的函数来使用生成器。生成器有一组非常特定的用例,在普通函数可以很好地完成工作的情况下使用它们将是相当愚蠢的。