Los resultados esperados son muy diferentes de los resultados reales cuando accidentalmente descubrí este problema en Internet.
var a = {n: 1} var b = a; ax = a = {n: 2} console.log (ax); console.log (bx); UndefinedObject {n: 2}Si me desarme, el resultado será lo que pensé
var a = {n: 1} var b = a; a = {n: 2}; ax = {n: 2} console.log (ax); // objeto {n: 2} console.log (bx); // undefinadoanalizar:
ax = a = {n: 2}
La operación de asignación de JS se combina con la derecha, que es equivalente a ax = (a = {n: 2})
La operación de evaluación de JS es de izquierda a derecha (PD: Discutida con un colega, dijo que era de izquierda a derecha, y pensé que era de derecha a izquierda, pero al final descubrí que estaba equivocado)
1) ax = (resultado final en soportes)
Después de descubrir que el atributo x de A no existe, agregue un atributo X al objeto apuntado por a. Este atributo X debe asignarle un resultado. Ok, esperaré el resultado.
2) Debido a que desea obtener el resultado en los soportes, AX sigue esperando el resultado en los soportes para devolverlo, por lo que comienza a evaluar a = {n: 2} y luego devuelve a este nuevo atributo x
3) Volver a a = {n: 2} En los paréntesis, ocurrió el cambio de señalización
La simple implementación de la asignación JS continua anterior es todo el contenido que comparto con usted. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.