Why object cannot be change when it's in global environment

Viewed 27

Can somebody tell me why object cannot be changed when it's in global environment, but it's ok when it in function. Is it because of using switch or maybe something else. Please help me undestand this gap in my knowledge.

For example

  1. It works
let checkForChange = (data) => {  
  let ticketCost = 5;
  let change = 0;  
  let cash = {
   5: 0,
   10: 0,
   20: 0,
  };
  
  for (let money of data) {
    change = money - ticketCost;

    switch(true) {
      case change == 0:
        cash[money] += 1;
        break;
      case change == 5 && cash[5] >= 1:
        cash[change] -= 1;
        cash[money] += 1;
        break;      
      default:
        return 'NO'
    }
  }    
  return 'YES';  
}

2.It doesn't, because object isn't changing.

let cash = {
   5: 0,
   10: 0,
   20: 0,
};

let checkForChange = (data) => {  
  let ticketCost = 5;
  let change = 0;
  
  for (let money of data) {
    change = money - ticketCost;

    switch(true) {
      case change == 0:
        cash[money] += 1;
        break;
      case change == 5 && cash[5] >= 1:
        cash[change] -= 1;
        cash[money] += 1;
        break;      
      default:
        return 'NO'
    }
  }    
  return 'YES';  
}
0 Answers
Related