🟑 MediumClosures & ScopeπŸ’» Output Question

Object spread override order

πŸ’‘

Hint

Object spread is order-sensitive: rightmost/latest definition wins. Use this for: {...defaults, ...overrides} to safely apply user config on top of defaults.

What does this output?

const defaults = { color: 'red', size: 'medium', border: 'solid' };
const custom = { color: 'blue', size: 'large' };

const config1 = { ...defaults, ...custom };
const config2 = { ...custom, ...defaults };
const config3 = { ...defaults, color: 'green' };

console.log(config1.color, config1.border);
console.log(config2.color, config2.border);
console.log(config3.color, config3.border);

Correct Output

blue solid
red solid
green solid

Why this output?

Explanation: Spread: later properties win. config1: custom spreads last β€” color=blue, border=solid (from defaults). config2: defaults last β€” color=red. config3: literal color after spread overrides defaults.color.

Key Insight: Object spread is order-sensitive: rightmost/latest definition wins. Use this for: {...defaults, ...overrides} to safely apply user config on top of defaults.

More Closures & Scope Output Questions

🟒 EasyClassic var in loop closureβ†’πŸŸ’ Easylet in loop closure (fix)β†’πŸŸ‘ MediumClosure counterβ†’πŸŸ‘ MediumIIFE closureβ†’

Practice predicting output live β†’

66 output questions with instant feedback

πŸ’» Try Output Quiz