Twitter hashtag: #esspec
便利ツール
時事ネタ
自己紹介 (近況報告)
syumai syumai.icon
Go / TSを書いて暮らしてます
iwatsurut
とくに、イベントもなく過ごしています。
js の話題ではないが、今週末 Kansai.go に参加します。
前回の復習していて、generator のない、es5.1 をちょろっと見てみたらやっぱり全然違った。
tomato3713
Go/TS/Perlを書いてます。
以前会話していた社内でGoのProposalを読む会の2回目を最近しました
Jboy
普段は、Flutter, Deno書いてます。 Supabase, Firebaseでサーバレスな開発してます。
今回は初参加です笑
前回のあらすじ
FunctionDeclarationInstantiation
関数の中身を実行するのに必要なものを揃える部分を読んでいた
今回の範囲
25. function(a, a) みたいなときの処理
7.4.13 CreateListIteratorRecord
Iterator Record { NextMethod: %GeneratorFunction.prototype.prototype.next% }.
27.5.1.2 %GeneratorPrototype%.next ( value )
1. Return ? GeneratorResume
code:js
const end = 10;
let count = 0;
const it = {
next(i) {
if (count < end) {
count += i;
return {
value: count,
done: false,
};
}
return { done: true };
},
};
/*
let result = {};
while (!result.done) {
result = it.next(2);
if (result.done) {
break;
}
console.log(result.value);
}
*/
const obj = {
};
// NaN
for (const val of obj) {
console.log(val);
}
メモ: next() の最初の呼び出しに渡された値は常に無視されます。
まだでてきていなかったと思うけど、仕様のどこかに書かれているんだろうか
syumai.icon Generator側の仕様なんじゃないですかね
for-of を break などで途中中断すると return() が呼ばれると書いてある
throw() がいつ呼ばれるかわからない
Iterator Records は next method を持っていてIterator interface を満たせば良いものではない
for-of などの時にだけ作られる
ループ中に外からいじられないようにIterator Recordsを作ってる?