5/7 accéder à accéder à une variable locale depuis l'extérieur d'une fonction


#1

voici mon code:

var caisse = {
total:0,
//N'oubliez pas d'ajouter votre propriété

ajouter: function(prixElement) {
    this.total += prixElement;
var prixDerniereTransaction = prixElement

},

prixDerniereTransaction : caisse.ajouter,
scan: function(element, quantite) {
switch (element) {
case "oeufs": this.ajouter(0.98 * quantite); break;
case "lait": this.ajouter(1.23 * quantite); break;
case "magazine": this.ajouter(4.99 * quantite); break;
case "chocolat": this.ajouter(0.45 * quantite); break;
}
return true;
},
//Ajoutez la méthode annuleDerniereTransaction ici
annuleDerniereTransaction : function(){
this.total - prixDerniereTransaction ;}
};

caisse.scan('oeufs',1);
caisse.scan('lait',1);
caisse.scan('magazine',1);
caisse.scan('chocolat',4);

//Annulez la dernière transaction et ajoutez 3 à la place
caisse.annuleDerniereTransaction()
caisse.scan("chocolat", 3)

// Affichez le total de la note
console.log('Votre total est de '+ caisse.total);

Je n'arrive pas à accéder à prixDerniereTransaction qui est dans la fonction ajouter depuis annuleDerniereTransaction.
aidez- moi SVP.


#2

salut,

j'ai utilisé un code un peu different en faisant de prixDenriereTransaction une propriété publique, mais cela ne fonctionne pas mieux... Mon code :

var caisse = {
total:0,
//N'oubliez pas d'ajouter votre propriété
prixDerniereTransaction:0,
ajouter: function(prixElement) {
this.prixDerniereTransaction = prixElement;
this.total += prixElement;
},
scan: function(element, quantite) {
switch (element) {
case "oeufs": this.ajouter(0.98 * quantite); break;
case "lait": this.ajouter(1.23 * quantite); break;
case "magazine": this.ajouter(4.99 * quantite); break;
case "chocolat": this.ajouter(0.45 * quantite); break;
}
return true;
},
//Ajoutez la méthode annuleDerniereTransaction ici
annuleDerniereTransaction: function(){
this.total -= prixDerniereTransaction;
}

};

caisse.scan('oeufs',1);
caisse.scan('lait',1);
caisse.scan('magazine',1);
caisse.scan('chocolat',4);

//Annulez la dernière transaction et ajoutez 3 à la place
caisse.annuleDerniereTransaction();
caisse.scan('chocolat',3);

// Affichez le total de la note
console.log('Votre total est de '+ caisse.total);


#3

j'ai trouvé ! Il suffisait de remplacer this.prixDerniereTransaction par prixDerniereTransaction :smile:

var caisse = {
total:0,
//N'oubliez pas d'ajouter votre propriété
prixDerniereTransaction:0,
ajouter: function(prixElement) {
prixDerniereTransaction = prixElement;
this.total += prixElement;
},
scan: function(element, quantite) {
switch (element) {
case "oeufs": this.ajouter(0.98 * quantite); break;
case "lait": this.ajouter(1.23 * quantite); break;
case "magazine": this.ajouter(4.99 * quantite); break;
case "chocolat": this.ajouter(0.45 * quantite); break;
}
return true;
},
//Ajoutez la méthode annuleDerniereTransaction ici
annuleDerniereTransaction: function(){
this.total -= prixDerniereTransaction;
}

};

caisse.scan('oeufs',1);
caisse.scan('lait',1);
caisse.scan('magazine',1);
caisse.scan('chocolat',4);

//Annulez la dernière transaction et ajoutez 3 à la place
caisse.annuleDerniereTransaction();
caisse.scan('chocolat',3);

// Affichez le total de la note
console.log('Votre total est de '+ caisse.total);