Les résultats attendus sont très différents des résultats réels lorsque j'ai découvert accidentellement ce problème sur Internet.
var a = {n: 1} var b = a; ax = a = {n: 2} console.log (ax); console.log (bx); UndefinedObject {n: 2}Si je démontes, le résultat sera ce que je pensais
var a = {n: 1} var b = a; a = {n: 2}; ax = {n: 2} console.log (ax); // objet {n: 2} console.log (bx); // non définianalyser:
hache = a = {n: 2}
L'opération d'attribution de JS est combinée avec la droite, qui équivaut à AX = (a = {n: 2})
L'opération d'évaluation de JS est de gauche à droite (PS: discutée avec un collègue, il a dit que c'était de gauche à droite, et je pensais que c'était de droite à gauche, mais à la fin j'ai trouvé que j'avais tort)
1) AX = (résultat final dans les supports)
Après avoir constaté que l'attribut x de A n'existe pas, ajoutez un attribut x à l'objet indiqué par a. Cet attribut X doit y attribuer un résultat. Ok, j'attendrai le résultat.
2) Parce que vous voulez obtenir le résultat en supports, AX continue d'attendre que le résultat par les supports le renvoie, alors vous commencez à évaluer A = {n: 2} puis à le retourner à ce nouvel attribut x
3) Retour à a = {n: 2} Entre parenthèses, le changement de pointage s'est produit
L'implémentation simple de l'affectation JS continue ci-dessus est tout le contenu que je partage avec vous. J'espère que vous pourrez vous faire référence et j'espère que vous pourrez soutenir Wulin.com plus.