Bizarre Error: Short Term Memory


#1



I have this coded correctly I believe but keep getting a bizarre error:

Oops, try again. Calling cashRegister.add(3.2) set the cashRegister.total to NaN instead of 3.2

Not sure what this means??? a glitch perhaps? Any ideas?
It does not make sense to DO what the error says since total is already set at 0 from the start.

Thanks!


var cashRegister = {
    total: 0,
//insert the add method here    
    add: function(itemCost){
        this.total += this.itemCost;
        
        } ,
    
    scan: function (item) {
        switch (item) { 
        case "eggs": 
            this.add(0.98); 
            break;
        
        case "milk": 
            this.add(1.23); 
            break;
        
        //Add other 2 items here
        case "magazine":
            this.add(4.99);
            break;
            
        case "chocolate":
            this.add(0.45);
            break;
        
        }
        return true;
    }
};

//Scan 2 eggs and 3 magazines
cashRegister.scan("eggs");
cashRegister.scan("eggs");
cashRegister.scan("magazine");
cashRegister.scan("magazine");
cashRegister.scan("magazine");    

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


#2

Nevermind, I figured it out.
I removed this.itemCost and just have itemCost
Previous error still makes no sense...


#3

well, this.itemCost is undefined. so adding a integer (total) and undefined (this.itemCost) results in isNaN (is not a number) since a undefined variable is not a number


#4

Yes. And thank you for the explanation - while I fixed the code to work, I wasn't really clear on the why part. Thank you.


#5