Maison >interface Web >js tutoriel >Pourquoi « console.log » affiche-t-il le comportement des objets asynchrones ?
Comportement asynchrone des objets dans Console.log
Lors de l'examen d'objets à l'aide de console.log, il est important d'être conscient de sa nature asynchrone. La console reçoit une référence d'objet de manière synchrone mais affiche ses propriétés uniquement lorsqu'elle est développée. Cela peut entraîner des divergences si l'objet est modifié avant d'être examiné.
Considérez le code suivant :
foo = [{id: 1},{id: 2},{id: 3},{id: 4}, {id: 5}, ]; console.log('foo1', foo, foo.length); foo.splice(2, 1); console.log('foo2', foo, foo.length);
Dans Chrome, cela produit le résultat suivant :
foo1 [Object, Object, Object, Object, Object] 5 0: Object 1: Object 2: Object 3: Object length: 4 __proto__: Array[0] 5 (index):23 foo2 [Object, Object, Object, Object] 4 0: Object 1: Object 2: Object 3: Object length: 4 __proto__: Array[0]
Initialement, console.log reçoit une référence à l'objet foo. Cependant, les propriétés sont affichées plus tard, après que l'objet a été modifié par foo.splice(2, 1). Par conséquent, la sortie affiche les valeurs mises à jour.
Pour atténuer ce problème, il existe plusieurs approches de journalisation alternatives :
console.log(foo.id, foo.name, foo.age);
console.log(JSON.stringify(foo));
console.log(JSON.parse(JSON.stringify(foo)));
Ces méthodes assurez-vous que la sortie enregistrée reflète l'état de l'objet au moment de la journalisation.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!