我遇到以下代码的问题:
<script type="text/javascript">
function testGenerator() {
yield "first";
document.write("step1");
yield "second";
document.write("step2");
yield "third";
document.write("step3");
}
var g = testGenerator();
document.write(g.next());
document.write(g.next());
</script>
为什么函数什么都不打印?
答案 0 :(得分:3)
首先,检查this chart以确保您使用的浏览器支持屈服。
然后,检查Mozilla's section on iterators,或者只阅读下面引用的要点:
为了使用JavaScript 1.7的一些新功能,您需要指定您希望使用JavaScript 1.7。在HTML或XUL代码中,使用:
<script type="application/javascript;version=1.7"></script>
使用JavaScript shell时,需要使用命令行上的-version 170开关或使用version()函数设置要使用的版本:
version(170);
需要使用新关键字“yield”和“let”的功能要求您指定版本1.7,因为现有代码可能会将这些关键字用作变量或函数名称。可以使用不引入新关键字(解构赋值和数组解析)的功能,而无需指定JavaScript版本。
TL; DR:yield关键字仅适用于包含在<script type="application/javascript;version=1.7">