0
votes

Quel sera le code ci-dessous la sortie à la console et quelle est la raison?

Ceci est une question d'entretien et je suis très curieux de la réponse.

var myObject = {
    foo: "bar",
    func: function() {
        var self = this;
        console.log("outer func:  this.foo = " + this.foo);
        console.log("outer func:  self.foo = " + self.foo);
        (function() {
            console.log("inner func:  this.foo = " + this.foo);
            console.log("inner func:  self.foo = " + self.foo);
        }());
    }
};
myObject.func();


1 commentaires

Avez-vous essayé de coller ce code dans la console et de l'exécuter?


4 Réponses :


3
votes

Voici la sortie de la console:

outer func:  this.foo = bar
outer func:  self.foo = bar
inner func:  this.foo = undefined
inner func:  self.foo = bar


0 commentaires

2
votes

Réponse:

"outer func:  this.foo = bar"
"outer func:  self.foo = bar"
"inner func:  this.foo = undefined"
"inner func:  self.foo = bar"


0 commentaires

3
votes

La sortie sera la suivante: xxx pré>

car ife (expression de la fonction immédiatement invoqué) sera appelée dans le contexte de l'objet global (fenêtre dans les navigateurs), donc "ceci" sera un objet global à l'intérieur de la vie et Lorsque vous essayez d'accéder à "this.foo" à l'intérieur de ife, il ne reviendra pas non défini car il n'y a pas de propriété nommée foo de l'objet global. p> xxx pré>

La sortie du code ci-dessus sera la suivante: P>

outer func:  this.foo = bar 
outer func:  self.foo = bar 
inner func:  this.foo = undefined 
inner func:  this.xyz = Hi There 
inner func:  self.foo = bar
inner func:  this = [object Window]


0 commentaires

1
votes

Console LOGS:

outer func:  this.foo = bar
outer func:  self.foo = bar
inner func:  this.foo = undefined
inner func:  self.foo = bar


0 commentaires