在本文中: https://wingolog.org/archives/2013/06/11/ecmascript-generators-from-a-performance-perspective,它提到:
在生成器函数中,V8将局部变量存储在堆中 而不是放在堆栈上。
但它也与下一段矛盾:
这种情况的例外是当您屈服并且有 临时文件。回想一下关于V8基准的文章 编译器认为完整的代码生成是堆栈机。它分配插槽 到命名的本地人,但是临时值在运行时进入堆栈,
我不了解的部分是生成器函数始终使用yield,并且我认为本文中提到的 suspension 是指 yield 语句。 / p>
答案 0 :(得分:2)
我认为该文章缺少示例:
return 12 + yield 5
在这种情况下,必须在堆栈上分配12,并且在挂起迭代器时,必须从堆栈中复制它,然后在迭代器继续时再次将其复制到堆栈上。第二段讨论“临时”(本例中为12),而不是“变量”。