<script>
function * d1 (p) {
p-=1;
yield p;
p-=2;
yield p;
}
var g=d1 (9);
var h;
console.log((h=g.next()).value+','+h.done+';');
console.log((h=g.next()).value+','+h.done+';');
console.log((h=g.next()).value+','+h.done+';');
</script>
8、偽を返します。次に 6、偽。その後、未定義、真。一方
<script>
function * d2 (p) {
function * d1 (p) {
p -=1 ;
yield p;
p -=2 ;
yield p;
}
d1(p);
}
var g=d2 (9);
var h;
console.log((h=g.next()).value+','+h.done+';');
console.log((h=g.next()).value+','+h.done+';');
console.log((h=g.next()).value+','+h.done+';');
</script>
undefined,true; が 3 回表示されます。
d1 の隠し構造 (内部関数として) が必要なので、最初のサンプルと同じ結果を得るにはどうすればよいですか?