You Deserved It! Please explain a couple things


#1

Hi all-

I was able to complete this section no problem but I don't understand what the cashRegister.total**.toFixed(2));** .toFixed(2) references, and what it means to show the total bill.

Also, please explain the need for the || 0 in add function this.total += (itemCost || 0). I hadn't entered that in the previous module; it was carried over into this module.

Thanks!

function StaffMember(name,discountPercent){
    this.name = name;
    this.discountPercent = discountPercent;
}

var sally = new StaffMember("Sally",5);
var bob = new StaffMember("Bob",10);

// Create yourself again as 'me' with a staff discount of 20%
var me = new StaffMember("Nick", 20);

var cashRegister = {
    total:0,
    lastTransactionAmount: 0,
    add: function(itemCost){
        this.total += (itemCost || 0);
        this.lastTransactionAmount = 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;
    },
    voidLastTransaction : function(){
        this.total -= this.lastTransactionAmount;
        this.lastTransactionAmount = 0;
    },
    // Create a new method applyStaffDiscount here
    applyStaffDiscount: function(employee) {
        this.total -= this.total * (employee.discountPercent / 100);
    },
    
};

cashRegister.scan('eggs',1);
cashRegister.scan('milk',1);
cashRegister.scan('magazine',3);
// Apply your staff discount by passing the 'me' object 
// to applyStaffDiscount
cashRegister.applyStaffDiscount(me);

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


#2

toFixed is a built in method, it specifies the number of digits you want to have. you can read about it here

it means or zero, it seems like some sort of fail safe, but it isn't explained anywhere. and frankly i don't seem the point, the add method can only be called if the item is valid


#3

Thank you for that explanation - that makes sense now. I felt the same way when seeing the or 0 show up there. You describe it as a fail safe- based on your response then, I don't suppose it is commonplace to apply a failsafe in code prophylactically then right? I would imagine it would only need to be there if when tested, it produces errors.

Hopefully my question makes sense; going off on a tangent here but just trying to make sense of it. Thank you in advance.


#4

it seems to add zero if itemCost would be undefined, but that would be nearly impossible.


#5

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.