Itérateur JavaScript Problème avec l'itérateur ?
ringa_lee
ringa_lee 2017-05-19 10:47:40
0
2
773

Voir le chapitre sur les itérateurs sur MDN
https://developer.mozilla.org...Expressions génératrices

Ensuite, entraînez-vous par vous-même et trouvez un problème.

//下面这个例子 ,想要实现打印3,4,5
var add=function(x,y){
    var current=x;
    return {
        [Symbol.iterator]:function(){return this;},
        next:function(){  return current++;}
    }
}


var it=add(3,5);
console.log(it.next());  

console.log(it.next()); 

console.log(it.next()); 

//结果  3 4 5

//注意与下面这种写法的区别
console.log(add(3,5).next()); //3

console.log(add(3,5).next()); //3

console.log(add(3,5).next()); //3

Le code est relativement simple. Ce que je veux demander, c'est pourquoi dans la deuxième méthode, lorsque je ne lui attribue pas la méthode add(), je ne peux pas générer d'itérations. D'après ma compréhension, add(3,5) dans cet exemple lui est équivalent, mais le résultat n'est évidemment pas le cas.

ringa_lee
ringa_lee

ringa_lee

répondre à tous(2)
黄舟

Le processus de parcours d'Iterator est comme ça.

(1) Créez un objet pointeur pointant vers la position de départ de la structure de données actuelle. En d’autres termes, l’objet traverseur est essentiellement un objet pointeur.

(2) La première fois que vous appelez la méthode suivante de l'objet pointeur, vous pouvez pointer le pointeur vers le premier membre de la structure de données.

(3) Lorsque la méthode suivante de l'objet pointeur est appelée pour la deuxième fois, le pointeur pointe vers le deuxième membre de la structure de données.

(4) Continuez à appeler la méthode suivante de l'objet pointeur jusqu'à ce qu'il pointe vers la fin de la structure de données.

phpcn_u1582

Chaque fois vous exécutez add, vous obtiendrez un objet. Chacun de ces objets a un courant indépendant. Donc it = add() 和多次 add()une fois n'est pas équivalent.

var it=add(3,5); // 对象1
console.log(it.next()); // 对象1 第1次 
console.log(it.next()); 
console.log(it.next()); // 对象1 第3次

console.log(add(3,5).next()); // 对象2 第1次
console.log(add(3,5).next()); // 对象3 第1次
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal