Ben generator functions on MDN üzerinde tökezledi ve hangi Kafamı kurcalayan şu örnektir:Neden javascript üreteci işlevi döndürme işlevi .next() parametrelerini döndürüyor?
function* logGenerator() {
console.log(yield);
console.log(yield);
console.log(yield);
}
var gen = logGenerator();
// the first call of next executes from the start of the function
// until the first yield statement
gen.next();
gen.next('pretzel'); // pretzel
gen.next('california'); // california
gen.next('mayonnaise'); // mayonnaise
Ne anlamıyorum console.log
ait argümanı yield
deyimi jeneratörün .next()
yönteme geçirilen parametre döner yüzden . Bu oluyor mu, boş bir yield
.next()
yönteminin ilk parametresinin değerini döndürmelidir?
gen.next(1,2,3); // the printed value is 1, the 2 and 3 are ignored
// and the actual yielded value is undefined
Ayrıca jeneratör fonksiyonunun vücudun içinde .next()
yöntemin diğer parametreleri erişmek için bir yol vardır:
Ben de böyle yukarıdaki ifadeyi doğrular niteliktedir biraz daha örnek, denediniz mi? Fark ettiğim başka bir şey ise, verim beyanı bu değerleri console.log
'a döndürürken, aslında jeneratörün çıkışı olarak üretilmezler. Çok kafa karıştırıcı olduğunu söylemeliyim.
... çünkü olması gereken şey bu mu? Bu neden kafanızı karıştırıyor? – user2357112
Bu, bir "verim" ifadesinin değerlendirdiği şeydir. – user2357112
@ user2357112 Beni şaşırtıyor çünkü yukarıdaki kodda başvurulan parametreyi göremiyorum. Cevaplardan gelen bağlantıları okuduğumda, şimdi her şey anlamlıdır ama ilk gördüğümde bunu anlamadım. Bir yan not olarak, aynı zamanda 'function * x() {getiri verimi;} – Jakub