EasyState & Immutability💻 Output Question

Object spread creates new reference — mutation does not

💡

Hint

React bails out of re-renders when state reference is unchanged. Mutating state directly means state === newState, so React never re-renders. Always return new objects.

What does this output?

const state1 = { count: 0, name: 'app' };

// Direct mutation — same reference
const state2 = state1;
state2.count = 5;

// Spread — new reference
const state3 = { ...state1, count: 10 };

console.log(state1 === state2);
console.log(state1 === state3);
console.log(state1.count);
console.log(state3.count);

Correct Output

true
false
5
10

Why this output?

Explanation: state2 = state1 copies the reference — same object. Mutating state2.count also changes state1.count (both point to same object). state3 = {...state1} is a new object, independent.

Key Insight: React bails out of re-renders when state reference is unchanged. Mutating state directly means state === newState, so React never re-renders. Always return new objects.

Practice predicting output live →

66 output questions with instant feedback

💻 Try Output Quiz