Day 46

Pure Functions & Immutability

11 min
JavaScript 100 Days

Pure functions aur immutability code ko predictable, testable, aur bug-free banate hain. React state updates, Redux reducers — sab immutability par depend karte hain.

Immutable Updates

State change karo bina original modify kiye.

immutable.js
javascript
// ❌ Mutable (bad)
function badAddItem(cart, item) {
  cart.push(item); // original modify!
  return cart;
}

// ✅ Immutable (good)
function addItem(cart, item) {
  return [...cart, item]; // new array
}

function updateItem(cart, id, updates) {
  return cart.map(item => 
    item.id === id ? { ...item, ...updates } : item
  );
}

function removeItem(cart, id) {
  return cart.filter(item => item.id !== id);
}

// Redux reducer style
function cartReducer(state = [], action) {
  switch (action.type) {
    case "ADD": return [...state, action.item];
    case "REMOVE": return state.filter(i => i.id !== action.id);
    case "UPDATE": return state.map(i => 
      i.id === action.id ? { ...i, ...action.updates } : i
    );
    default: return state;
  }
}

🎯 Practice Challenge

Immutable user profile manager banao — updateProfile(), addSkill(), removeSkill() — sab original modify kiye bina.