🟢 EasyFunctions📖 Theory Question

What are default parameters and how do they work?

💡

Hint

Evaluated at call time, only when arg is undefined — can reference earlier params and outer scope

Full Answer

// Basic default parameters
function greet(name = 'World', greeting = 'Hello') {
  return `${greeting}, ${name}!`;
}
greet();              // 'Hello, World!'
greet('Alice');       // 'Hello, Alice!'
greet('Bob', 'Hi');   // 'Hi, Bob!'
greet(undefined, 'Hey'); // 'Hey, World!' — undefined triggers default
greet(null, 'Hey');   // 'Hey, null!' — null does NOT trigger default

// Defaults can reference earlier parameters
function range(start = 0, end = start + 10) {
  return { start, end };
}
range();     // { start: 0, end: 10 }
range(5);    // { start: 5, end: 15 }

// Defaults can be expressions / function calls
let count = 0;
function makeId(id = ++count) { return id; } // evaluated each call
makeId(); // 1
makeId(); // 2
makeId(99); // 99 (provided, so default not evaluated)

// Defaults + destructuring (very common pattern)
function createUser({ name = 'Anonymous', role = 'user', active = true } = {}) {
  return { name, role, active };
}
createUser({ name: 'Alice' }); // { name:'Alice', role:'user', active:true }
createUser();                  // {} → uses = {} → all defaults apply
💡 Default params replaced the old pattern: name = name || 'World'. The old way was buggy (falsy values like 0 or '' triggered the default). New defaults only trigger for undefined.

More Functions Questions

🟢 EasyWhat is the difference between call, apply, and bind?→🟢 EasyHow do arrow functions differ from regular functions?→🟢 EasyWhat is a pure function and why does it matter?→🟢 EasyWhat are Higher-Order Functions (HOF)?→

Practice this in a timed sprint →

5 free questions, no signup required

âš¡ Start Sprint