Bleep Bleep.... Help me to explain this code


#1

`var cashRegister = {
total:0,
lastTransactionAmount:0,
add: function(itemCost) {
this.total += itemCost;
},
scan: function(item,quantity) {
switch (item) {
case "eggs": this.add(0.98 * quantity); break;
case "milk": this.add(1.23 * quantity); break;
case "magazine": this.add(4.99 * quantity); break;
case "chocolate": this.add(0.45 * quantity); break;
}
return true;
},
//Add the voidLastTransaction Method here
voidLastTransaction: function() {
this.total -= this.lastTransactionAmount;
}
};
cashRegister.scan('eggs',1);
cashRegister.scan('milk',1);
cashRegister.scan('magazine',1);
cashRegister.scan('chocolate',4);

//Void the last transaction and then add 3 instead
cashRegister.voidLastTransaction();
cashRegister.scan('chocolate',-1);

//Show the total bill
console.log('Your bill is '+cashRegister.total);`

Can anyone please explain how this code work?? I am confused how "lastTransactionamount" is working though we are not defining any last transaction.
Also my code is giving right answer when I am not using cashRegister.voidLastTransaction(); .
please help!!!:sob:


#2

It doesn't, you need to


#3

@alizaidi09,
What they want you to do,
is that as you are incrementing this.total with itemCost
you will have to assign this same itemCost-Value to lastTransactionAmount

add: function(itemCost) {
      this.total += itemCost;
      this.lastTransactionAmount = itemCost;
 },

you will then be able to do

cashRegister.scan('eggs',1);
cashRegister.scan('milk',1);
cashRegister.scan('magazine',1);
cashRegister.scan('chocolate',4);

//Void the last transaction and then add 3 instead
cashRegister.voidLastTransaction();
cashRegister.scan('chocolate',3);

console.log('Your bill is '+cashRegister.total);`

#4

Thanks @dantemp @leonhard.wettengmx.n :slightly_smiling:


#5

You the real MVP.

But otr, because this person appears on like every question.