Os resultados esperados são muito diferentes dos resultados reais quando descobri acidentalmente esse problema na Internet.
var a = {n: 1} var b = a; ax = a = {n: 2} console.log (ax); console.log (bx); UndefinedObject {n: 2}Se eu desmontar, o resultado será o que eu pensei
var a = {n: 1} var b = a; a = {n: 2}; ax = {n: 2} console.log (ax); // objeto {n: 2} console.log (bx); // indefinidoanalisar:
ax = a = {n: 2}
A operação de atribuição de JS é combinada com a direita, que é equivalente a ax = (a = {n: 2})
A operação de avaliação de JS é da esquerda para a direita (PS: discutida com um colega, ele disse que era da esquerda para a direita, e eu pensei que era da direita para a esquerda, mas no final eu descobri que estava errado)
1) AX = (resultado final em colchetes)
Depois de descobrir que o atributo x não existe, adicione um atributo x ao objeto apontado por a. Este atributo X precisa atribuir um resultado a ele. Ok, vou esperar o resultado.
2) Como você deseja obter o resultado em colchetes, Ax continua esperando o resultado de colchetes devolvê -lo, então você começa a avaliar a = {n: 2} e depois retornar a este novo atributo x
3) retornar a A = {n: 2} entre colchetes, a mudança apontadora ocorreu
A simples implementação da atribuição contínua de JS acima é todo o conteúdo que compartilho com você. Espero que você possa lhe dar uma referência e espero que você possa apoiar mais o wulin.com.