Maison > interface Web > js tutoriel > problème d'affectation continue javascript_compétences javascript

problème d'affectation continue javascript_compétences javascript

WBOY
Libérer: 2016-05-16 15:50:50
original
1234 Les gens l'ont consulté

J'ai trouvé ce morceau de code en recherchant des questions d'entretien il y a quelques jours. Après l'avoir exécuté, c'était complètement différent de ce à quoi je m'attendais

 var a = {
   n : 1
 };
 var b = a;
 a.x = a = {n : 2};
 console.log(a.x);
 console.log(b.x);

Copier après la connexion

Le résultat de sortie est :

indéfini

[objet Objet]

Au début, je pensais que l'instruction devait d'abord attribuer {n : 2} à a, puis attribuer {n : 2} à a.x;

Mais ce n'était pas le cas, j'ai donc changé le code et ajouté quelques logs

var test;
var a = {
  get test () {
    console.log("call a get");
    return test;
  },
  set test (value) {
    console.log("call a set");
    test = value;
  }
}
var test2;
var b = {
  get test2 () {
    console.log("call b get");
    return test2;
  },
  set test2 (value) {
    console.log("call b set");
    test2 = value;
  }
}
a.test = {
  n : 1
};
b.test2 = a.test;
console.log("begin");
a.test.x = a.test = {n : 2};

Copier après la connexion

De cette façon, après le début, il sera clair d'un seul coup d'œil ce que cette mission effectue.

Ceci est le journal imprimé lorsque l'instruction est exécutée

D'abord, un get est déclenché, puis un ensemble est déclenché.

Je suppose que l'ordre d'exécution de cette instruction est de supprimer d'abord la variable de gauche, puis d'effectuer l'affectation. (Avant d'exécuter cette instruction, supprimez d'abord la référence de l'objet, puis effectuez l'affectation à droite. à gauche)


Ce qui précède représente l'intégralité du contenu de cet article, j'espère que vous l'aimerez tous

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal